espressif: ESP32-C2 initial support
Signed-off-by: Almir Okato <almir.okato@espressif.com>
diff --git a/boot/espressif/hal/include/esp32c2/esp32c2.cmake b/boot/espressif/hal/include/esp32c2/esp32c2.cmake
new file mode 100644
index 0000000..b859f9f
--- /dev/null
+++ b/boot/espressif/hal/include/esp32c2/esp32c2.cmake
@@ -0,0 +1,29 @@
+# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
+#
+# SPDX-License-Identifier: Apache-2.0
+
+list(APPEND hal_srcs
+ ${esp_hal_dir}/components/esp_hw_support/port/${MCUBOOT_TARGET}/rtc_init.c
+ ${esp_hal_dir}/components/hal/cache_hal.c
+ ${esp_hal_dir}/components/efuse/${MCUBOOT_TARGET}/esp_efuse_table.c
+ ${esp_hal_dir}/components/efuse/src/efuse_controller/keys/without_key_purposes/one_key_block/esp_efuse_api_key.c
+)
+
+if (DEFINED CONFIG_ESP_CONSOLE_UART_CUSTOM)
+ list(APPEND hal_srcs
+ ${src_dir}/${MCUBOOT_TARGET}/console_uart_custom.c
+ )
+endif()
+
+list(APPEND LINKER_SCRIPTS
+ -T${esp_hal_dir}/components/esp_rom/${MCUBOOT_TARGET}/ld/${MCUBOOT_TARGET}.rom.newlib.ld
+)
+
+set_source_files_properties(
+ ${esp_hal_dir}/components/bootloader_support/src/esp_image_format.c
+ ${esp_hal_dir}/components/bootloader_support/bootloader_flash/src/bootloader_flash.c
+ ${esp_hal_dir}/components/bootloader_support/bootloader_flash/src/bootloader_flash_config_${MCUBOOT_TARGET}.c
+ ${esp_hal_dir}/components/hal/mmu_hal.c
+ ${esp_hal_dir}/components/hal/cache_hal.c
+ PROPERTIES COMPILE_FLAGS
+ "-Wno-logical-op")
diff --git a/boot/espressif/hal/include/esp32c2/sdkconfig.h b/boot/espressif/hal/include/esp32c2/sdkconfig.h
new file mode 100644
index 0000000..f71490b
--- /dev/null
+++ b/boot/espressif/hal/include/esp32c2/sdkconfig.h
@@ -0,0 +1,30 @@
+/*
+ * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#define BOOTLOADER_BUILD 1
+#define CONFIG_IDF_FIRMWARE_CHIP_ID 0x000C
+#define CONFIG_IDF_TARGET_ESP32C2 1
+#define CONFIG_ESP32C2_REV_MIN_0 1
+#define CONFIG_ESP32C2_REV_MIN_FULL 3
+#define CONFIG_ESP_REV_MIN_FULL CONFIG_ESP32C2_REV_MIN_FULL
+#define CONFIG_ESP32C2_REV_MIN 3
+#define CONFIG_ESP32C2_REV_MAX_FULL 99
+#define CONFIG_ESP_REV_MAX_FULL CONFIG_ESP32C2_REV_MAX_FULL
+#define CONFIG_IDF_TARGET_ARCH_RISCV 1
+#define CONFIG_MMU_PAGE_SIZE 0x10000
+#define CONFIG_XTAL_FREQ_26 1
+#define CONFIG_XTAL_FREQ 26
+#define CONFIG_SPI_FLASH_ROM_DRIVER_PATCH 1
+#define CONFIG_MCUBOOT 1
+#define NDEBUG 1
+#define CONFIG_BOOTLOADER_WDT_TIME_MS 9000
+#define CONFIG_ESP_CONSOLE_UART_BAUDRATE 115200
+#define CONFIG_BOOTLOADER_OFFSET_IN_FLASH 0x0000
+#define CONFIG_PARTITION_TABLE_OFFSET 0x10000
+#define CONFIG_EFUSE_VIRTUAL_OFFSET 0x250000
+#define CONFIG_EFUSE_VIRTUAL_SIZE 0x2000
+#define CONFIG_EFUSE_MAX_BLK_LEN 256
+#define CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT 1
diff --git a/boot/espressif/hal/include/mcuboot_config/mcuboot_logging.h b/boot/espressif/hal/include/mcuboot_config/mcuboot_logging.h
index 680bc79..d619772 100644
--- a/boot/espressif/hal/include/mcuboot_config/mcuboot_logging.h
+++ b/boot/espressif/hal/include/mcuboot_config/mcuboot_logging.h
@@ -27,6 +27,8 @@
#define TARGET "[esp32c3]"
#elif CONFIG_IDF_TARGET_ESP32C6
#define TARGET "[esp32c6]"
+#elif CONFIG_IDF_TARGET_ESP32C2
+#define TARGET "[esp32c2]"
#elif CONFIG_IDF_TARGET_ESP32H2
#define TARGET "[esp32h2]"
#else
diff --git a/boot/espressif/hal/src/esp32c2/console_uart_custom.c b/boot/espressif/hal/src/esp32c2/console_uart_custom.c
new file mode 100644
index 0000000..e006709
--- /dev/null
+++ b/boot/espressif/hal/src/esp32c2/console_uart_custom.c
@@ -0,0 +1,21 @@
+/*
+ * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+#include <esp_rom_uart.h>
+#include <hal/uart_ll.h>
+#include <soc/uart_periph.h>
+
+#if CONFIG_ESP_CONSOLE_UART_CUSTOM
+static uart_dev_t *alt_console_uart_dev = (CONFIG_ESP_CONSOLE_UART_NUM == 0) ?
+ &UART0 :
+ &UART1;
+
+void IRAM_ATTR esp_rom_uart_putc(char c)
+{
+ while (uart_ll_get_txfifo_len(alt_console_uart_dev) == 0);
+ uart_ll_write_txfifo(alt_console_uart_dev, (const uint8_t *) &c, 1);
+}
+#endif