soc: infineon: psoc4: Add PSOC 4100S Max series support

Add initial support for the PSOC 4100S Max series, starting
with the CY8C4149AZI-S598 (100-TQFP package) used on the
CY8CKIT-041S-MAX development board.

The infrastructure supports adding additional part numbers
in the future as needed.

Signed-off-by: Braeden Lane <Braeden.Lane@infineon.com>
This commit is contained in:
Braeden Lane
2025-12-10 13:57:54 -08:00
committed by Anas Nashif
parent 891d50c396
commit 14268793a9
8 changed files with 122 additions and 0 deletions

View File

@@ -375,4 +375,17 @@
#endif /* CONFIG_SOC_SERIES_PSOC4100TP */
#if defined(CONFIG_SOC_SERIES_PSOC4100SMAX)
#if defined(CONFIG_SOC_CY8C4149AZI_S598)
#ifndef CY8C4149AZI_S598
#define CY8C4149AZI_S598
#endif
#ifndef CY8C4149AZI_S598_
#define CY8C4149AZI_S598_
#endif
#endif
#endif /* CONFIG_SOC_SERIES_PSOC4100SMAX */
#endif /* INFINEON_KCONFIG_H__ */

View File

@@ -0,0 +1,10 @@
# Copyright (c) 2025 Infineon Technologies AG,
# or an affiliate of Infineon Technologies AG.
#
# SPDX-License-Identifier: Apache-2.0
zephyr_sources(soc.c)
zephyr_include_directories(.)
#default Zephyr linker script
set(SOC_LINKER_SCRIPT ${ZEPHYR_BASE}/include/zephyr/arch/arm/cortex_m/scripts/linker.ld CACHE INTERNAL "")

View File

@@ -0,0 +1,25 @@
# Copyright (c) 2025 Infineon Technologies AG,
# or an affiliate of Infineon Technologies AG.
#
# SPDX-License-Identifier: Apache-2.0
# SOC Packages for Infineon PSOC4100Smax series MCUs
config SOC_PACKAGE_PSOC4100SMAX_100_TQFP
bool
help
100-pin TQFP package
# Hardware configuration for PSOC4100SMAX series
config SOC_SERIES_PSOC4100SMAX
select ARM
select CPU_CORTEX_M0PLUS
select CPU_CORTEX_M_HAS_VTOR
select CPU_HAS_ARM_MPU
select BUILD_OUTPUT_HEX
select BUILD_OUTPUT_BIN
select DYNAMIC_INTERRUPTS
select SOC_EARLY_INIT_HOOK
select CPU_CORTEX_M_HAS_SYSTICK
config SOC_CY8C4149AZI_S598
select SOC_PACKAGE_PSOC4100SMAX_100_TQFP

View File

@@ -0,0 +1,14 @@
# Copyright (c) 2025 Infineon Technologies AG,
# or an affiliate of Infineon Technologies AG.
#
# SPDX-License-Identifier: Apache-2.0
if SOC_SERIES_PSOC4100SMAX
config NUM_IRQS
default 32
config SYS_CLOCK_HW_CYCLES_PER_SEC
default $(dt_node_int_prop_int,/cpus/cpu@0,clock-frequency)
endif # SOC_SERIES_PSOC4100SMAX

View File

@@ -0,0 +1,21 @@
# Copyright (c) 2025 Infineon Technologies AG,
# or an affiliate of Infineon Technologies AG.
#
# SPDX-License-Identifier: Apache-2.0
# MCU series
config SOC_SERIES_PSOC4100SMAX
bool
select SOC_FAMILY_INFINEON_PSOC4
help
PSOC4100Smax Series MCU
config SOC_SERIES
default "psoc4100smax" if SOC_SERIES_PSOC4100SMAX
config SOC_CY8C4149AZI_S598
bool
select SOC_SERIES_PSOC4100SMAX
config SOC
default "cy8c4149azi_s598" if SOC_CY8C4149AZI_S598

View File

@@ -0,0 +1,21 @@
/*
* Copyright (c) 2025 Infineon Technologies AG,
* or an affiliate of Infineon Technologies AG.
*
* SPDX-License-Identifier: Apache-2.0
*/
#include <zephyr/device.h>
#include <zephyr/init.h>
#include <zephyr/kernel.h>
#include <cy_sysint.h>
#include <system_cat2.h> /* PSoC4 system init header from PDL */
#include "cy_pdl.h"
/* Minimal early initialization for PSoC 4100S Max */
void soc_early_init_hook(void)
{
/* Initializes the system */
SystemInit();
}

View File

@@ -0,0 +1,15 @@
/*
* Copyright (c) 2025 Infineon Technologies AG,
* or an affiliate of Infineon Technologies AG.
*
* SPDX-License-Identifier: Apache-2.0
*/
#ifndef ZEPHYR_SOC_INFINEON_PSOC4_PSOC4100SMAX_SOC_H_
#define ZEPHYR_SOC_INFINEON_PSOC4_PSOC4100SMAX_SOC_H_
#ifndef _ASMLANGUAGE
#include <cy_device_headers.h>
#endif /* !_ASMLANGUAGE */
#endif /* ZEPHYR_SOC_INFINEON_PSOC4_PSOC4100SMAX_SOC_H_ */

View File

@@ -48,3 +48,6 @@ family:
- name: cy8c4146azq_t453
- name: cy8c4147azq_t415
- name: cy8c4147azq_t455
- name: psoc4100smax
socs:
- name: cy8c4149azi_s598