arm/stm32h7: add STM32H735 support

add STM32H735 support

Assisted-by: Codex:GPT-6
Signed-off-by: raiden00pl <raiden00@railab.me>
This commit is contained in:
raiden00pl 2026-09-23 09:31:25 +02:00 • committed by simbit18
parent ba9619bc2b
commit 7f2ae8ffec
10 changed files with 125 additions and 10 deletions

View file

@ -27,7 +27,7 @@ STM32H743 Yes
STM32H753 Yes
STM32H742 No
STM32H725 No
STM32H735 No
STM32H735 Yes
STM32H723 No
STM32H733 No
STM32H7R3 Yes

View file

@ -58,6 +58,11 @@
#if defined(CONFIG_STM32_STM32H7RSXX) || \
defined (CONFIG_ARCH_CHIP_STM32H723VG) || \
defined (CONFIG_ARCH_CHIP_STM32H723ZG) || \
defined (CONFIG_ARCH_CHIP_STM32H735AG) || \
defined (CONFIG_ARCH_CHIP_STM32H735IG) || \
defined (CONFIG_ARCH_CHIP_STM32H735RG) || \
defined (CONFIG_ARCH_CHIP_STM32H735VG) || \
defined (CONFIG_ARCH_CHIP_STM32H735ZG) || \
defined (CONFIG_ARCH_CHIP_STM32H743AG) || \
defined (CONFIG_ARCH_CHIP_STM32H743AI) || \
defined (CONFIG_ARCH_CHIP_STM32H743BG) || \
@ -153,11 +158,21 @@
/* Peripherals */
# if defined(CONFIG_STM32H7_IO_CONFIG_A)
# ifdef CONFIG_STM32_STM32H72XXX_OR_STM32H73XXX
# define STM32_NGPIO (8) /* GPIOA-GPIOH */
# else
# define STM32_NGPIO (10) /* GPIOA-GPIOJ */
# endif
# elif defined(CONFIG_STM32H7_IO_CONFIG_B)
# define STM32_NGPIO (11) /* GPIOA-GPIOK */
# elif defined(CONFIG_STM32H7_IO_CONFIG_I)
# ifdef CONFIG_STM32_STM32H72XXX_OR_STM32H73XXX
# define STM32_NGPIO (11) /* GPIOA-H, GPIOJ-K */
# else
# define STM32_NGPIO (9) /* GPIOA-GPIOI */
# endif
# elif defined(CONFIG_STM32H7_IO_CONFIG_R)
# define STM32_NGPIO (8) /* GPIOA-D, GPIOH */
# elif defined(CONFIG_STM32H7_IO_CONFIG_V)
# define STM32_NGPIO (8) /* GPIOA-GPIOH, missing GPIOF-GPIOG */
# elif defined(CONFIG_STM32H7_IO_CONFIG_X)

View file

@ -425,6 +425,9 @@ config STM32_HAVE_GPIOF
config STM32_HAVE_GPIOG
bool
config STM32_HAVE_GPIOI
bool
# HRTIM capabilities
config STM32_HAVE_HRTIM1

View file

@ -25,7 +25,7 @@ config STM32_H7_LEGACY
select STM32_HAVE_TIM8
select STM32_HAVE_I2C4
select STM32_HAVE_SYSCFG
select STM32_HAVE_USART6
select STM32_HAVE_USART6 if !STM32H7_IO_CONFIG_R
select STM32_HAVE_HSEM
select STM32_HAVE_DAC1
@ -66,12 +66,12 @@ config STM32_H7_PERIPHERALS
select STM32_HAVE_SPI1
select STM32_HAVE_SPI2
select STM32_HAVE_SPI3
select STM32_HAVE_SPI4
select STM32_HAVE_SPI4 if !STM32H7_IO_CONFIG_R
select STM32_HAVE_SPI6
select STM32_HAVE_UART4
select STM32_HAVE_UART5
select STM32_HAVE_UART7
select STM32_HAVE_UART8
select STM32_HAVE_UART8 if !STM32H7_IO_CONFIG_R
select STM32_HAVE_USART1
select STM32_HAVE_USART2
select STM32_HAVE_USART3
@ -273,6 +273,81 @@ config ARCH_CHIP_STM32H723ZG
STM32 H7 Cortex M7, 1024 Kb FLASH, 564K Kb SRAM,
LQFP144
config ARCH_CHIP_STM32H735AG
bool "STM32H735AG"
select STM32_STM32H7X3XX
select STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_FLASH_CONFIG_G
select STM32H7_IO_CONFIG_A
select STM32_HAVE_SMPS
select STM32_HAVE_FDCAN3
select STM32_HAVE_CRYP
select STM32_HAVE_IP_CRYPTO_H7
select STM32_HAVE_HASH
---help---
STM32 H7 Cortex-M7, 1024 KiB FLASH, 564 KiB SRAM,
with cryptographic and hash accelerators, UFBGA169.
config ARCH_CHIP_STM32H735IG
bool "STM32H735IG"
select STM32_STM32H7X3XX
select STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_FLASH_CONFIG_G
select STM32H7_IO_CONFIG_I
select STM32_HAVE_SMPS
select STM32_HAVE_FDCAN3
select STM32_HAVE_CRYP
select STM32_HAVE_IP_CRYPTO_H7
select STM32_HAVE_HASH
---help---
STM32 H7 Cortex-M7, 1024 KiB FLASH, 564 KiB SRAM,
with cryptographic and hash accelerators, LQFP176 or TFBGA176+25.
config ARCH_CHIP_STM32H735RG
bool "STM32H735RG"
select STM32_STM32H7X3XX
select STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_FLASH_CONFIG_G
select STM32H7_IO_CONFIG_R
select STM32_HAVE_SMPS
select STM32_HAVE_CRYP
select STM32_HAVE_IP_CRYPTO_H7
select STM32_HAVE_HASH
---help---
STM32 H7 Cortex-M7, 1024 KiB FLASH, 564 KiB SRAM,
with cryptographic and hash accelerators, VFQFPN68.
config ARCH_CHIP_STM32H735VG
bool "STM32H735VG"
select STM32_STM32H7X3XX
select STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_FLASH_CONFIG_G
select STM32H7_IO_CONFIG_V
select STM32_HAVE_SMPS
select STM32_HAVE_FDCAN3
select STM32_HAVE_CRYP
select STM32_HAVE_IP_CRYPTO_H7
select STM32_HAVE_HASH
---help---
STM32 H7 Cortex-M7, 1024 KiB FLASH, 564 KiB SRAM,
with cryptographic and hash accelerators,
LQFP100, TFBGA100 or WLCSP115.
config ARCH_CHIP_STM32H735ZG
bool "STM32H735ZG"
select STM32_STM32H7X3XX
select STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_FLASH_CONFIG_G
select STM32H7_IO_CONFIG_Z
select STM32_HAVE_SMPS
select STM32_HAVE_FDCAN3
select STM32_HAVE_CRYP
select STM32_HAVE_IP_CRYPTO_H7
select STM32_HAVE_HASH
---help---
STM32 H7 Cortex-M7, 1024 KiB FLASH, 564 KiB SRAM,
with cryptographic and hash accelerators, LQFP144.
config ARCH_CHIP_STM32H743AG
bool "STM32H743AG"
select STM32_STM32H7X3XX
@ -739,6 +814,7 @@ config STM32_STM32H7X0XX
select STM32_HAVE_LTDC
select STM32_HAVE_GPIOF if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOG if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOI
select STM32_HAVE_SPI5 if !STM32H7_IO_CONFIG_V
config STM32_STM32H7RSXX
@ -761,9 +837,10 @@ config STM32_STM32H7X3XX
select STM32_HAVE_FDCAN1
select STM32_HAVE_FDCAN2
select STM32_HAVE_LTDC
select STM32_HAVE_GPIOF if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOG if !STM32H7_IO_CONFIG_V
select STM32_HAVE_SPI5 if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOF if !STM32H7_IO_CONFIG_V && !STM32H7_IO_CONFIG_R
select STM32_HAVE_GPIOG if !STM32H7_IO_CONFIG_V && !STM32H7_IO_CONFIG_R
select STM32_HAVE_GPIOI if !STM32_STM32H72XXX_OR_STM32H73XXX
select STM32_HAVE_SPI5 if !STM32H7_IO_CONFIG_V && !STM32H7_IO_CONFIG_R
config STM32_STM32H7B3XX
bool
@ -771,6 +848,7 @@ config STM32_STM32H7B3XX
select STM32_H7_LEGACY
select STM32_HAVE_GPIOF if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOG if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOI
select STM32_HAVE_SPI5 if !STM32H7_IO_CONFIG_V
config STM32_STM32H7X5XX
@ -783,6 +861,7 @@ config STM32_STM32H7X5XX
select STM32_HAVE_LTDC
select STM32_HAVE_GPIOF if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOG if !STM32H7_IO_CONFIG_V
select STM32_HAVE_GPIOI
select STM32_HAVE_SPI5 if !STM32H7_IO_CONFIG_V
select STM32_HAVE_SMPS
@ -794,12 +873,16 @@ config STM32_STM32H7X7XX
select STM32_HAVE_LTDC
select STM32_HAVE_GPIOF
select STM32_HAVE_GPIOG
select STM32_HAVE_GPIOI
select STM32_HAVE_SPI5
# The reduced SRAM configuration STM32H72X and STM32H73X
config STM32_STM32H72XXX_OR_STM32H73XXX
bool
default n
select STM32_HAVE_OCTOSPIM
select STM32_HAVE_OCTOSPI1
select STM32_HAVE_OCTOSPI2
config STM32_FLASH_CR_PSIZE
int "Flash program size width"

View file

@ -161,7 +161,7 @@
# define STM32_GPIOH_AFRH (STM32_GPIOH_BASE+STM32_GPIO_AFRH_OFFSET)
#endif
#ifdef STM32_GPIOI_BASE
#ifdef CONFIG_STM32_HAVE_GPIOI
# define STM32_GPIOI_MODER (STM32_GPIOI_BASE+STM32_GPIO_MODER_OFFSET)
# define STM32_GPIOI_OTYPER (STM32_GPIOI_BASE+STM32_GPIO_OTYPER_OFFSET)
# define STM32_GPIOI_OSPEED (STM32_GPIOI_BASE+STM32_GPIO_OSPEED_OFFSET)

View file

@ -195,9 +195,12 @@
#define STM32_NANDC_BASE 0x52004000 /* NAND Flash controller */
#define STM32_SDRAMC_BASE 0x52004000 /* SDRAM controller */
#define STM32_QUADSPI_BASE 0x52005000 /* 0x52005000-0x52005fff QUADSPI control */
#define STM32_OCTOSPI1_BASE 0x52005000 /* OCTOSPI1 control */
#define STM32_DLYBQUADSPI_BASE 0x52006000 /* 0x52006000-0x52006fff QUADSPI Delay Block */
#define STM32_SDMMC1_BASE 0x52007000 /* 0x52007000-0x52007fff SDMMC1 */
#define STM32_DLYBSDMMC1_BASE 0x52008000 /* 0x52008000-0x52008fff Delay Block SDMMC1 */
#define STM32_OCTOSPI2_BASE 0x5200a000 /* 0x5200a000-0x5200afff OCTOSPI2 control */
#define STM32_OCTOSPIM_BASE 0x5200b400 /* 0x5200b400-0x5200b7ff OCTOSPI I/O manager */
/* APB4 Base Addresses ******************************************************/

View file

@ -684,6 +684,14 @@
#define GPIO_LTDC_VSYNC_2 (GPIO_ALT|GPIO_AF14|GPIO_PULLUP|GPIO_PUSHPULL|GPIO_PORTI|GPIO_PIN13)
#define GPIO_LTDC_VSYNC_3 (GPIO_ALT|GPIO_AF14|GPIO_PULLUP|GPIO_PUSHPULL|GPIO_PORTI|GPIO_PIN9)
/* Additional STM32H72x/73x LTDC pins */
#ifdef CONFIG_STM32_STM32H72XXX_OR_STM32H73XXX
# define GPIO_LTDC_B1_4 (GPIO_ALT|GPIO_AF14|GPIO_PULLUP|GPIO_PUSHPULL|GPIO_PORTD|GPIO_PIN0)
# define GPIO_LTDC_R0_4 (GPIO_ALT|GPIO_AF14|GPIO_PULLUP|GPIO_PUSHPULL|GPIO_PORTE|GPIO_PIN0)
# define GPIO_LTDC_R6_5 (GPIO_ALT|GPIO_AF14|GPIO_PULLUP|GPIO_PUSHPULL|GPIO_PORTE|GPIO_PIN1)
#endif
/* Low Power Timer */
#define GPIO_LPTIM1_ETR_1 (GPIO_ALT|GPIO_AF1|GPIO_FLOAT|GPIO_PORTE|GPIO_PIN0)

View file

@ -693,6 +693,7 @@
#define RCC_AHB3RSTR_FMCRST (1 << 12) /* RCC AHB3RSTR: FMCRST */
#define RCC_AHB3RSTR_QSPIRST (1 << 14) /* RCC AHB3RSTR: QSPIRST */
#define RCC_AHB3RSTR_SDMMC1RST (1 << 16) /* RCC AHB3RSTR: SDMMC1RST */
#define RCC_AHB3RSTR_OSPI2RST (1 << 19) /* RCC AHB3RSTR: OSPI2RST */
#define RCC_AHB3RSTR_CPURST (1 << 31) /* RCC AHB3RSTR: CPURST */
/* AHB1 peripheral reset register */
@ -865,6 +866,8 @@
#define RCC_AHB3ENR_FMCEN (1 << 12) /* RCC AHB3ENR: FMCEN */
#define RCC_AHB3ENR_QSPIEN (1 << 14) /* RCC AHB3ENR: QSPIEN */
#define RCC_AHB3ENR_SDMMC1EN (1 << 16) /* RCC AHB3ENR: SDMMC1EN */
#define RCC_AHB3ENR_OSPI2EN (1 << 19) /* RCC AHB3ENR: OSPI2EN */
#define RCC_AHB3ENR_IOMNGREN (1 << 21) /* RCC AHB3ENR: IOMNGREN */
/* AHB1 Peripheral Clock enable register */

View file

@ -99,7 +99,7 @@ static spinlock_t g_configgpio_lock = SP_UNLOCKED;
# define GPIOG_BASE 0
#endif
#ifdef STM32_GPIOI_BASE
#ifdef CONFIG_STM32_HAVE_GPIOI
# define GPIOI_BASE STM32_GPIOI_BASE
#else
# define GPIOI_BASE 0

View file

@ -437,7 +437,7 @@ static inline void rcc_enableahb4(void)
#if STM32_NGPIO > 7
| RCC_AHB4ENR_GPIOHEN
#endif
#if STM32_NGPIO > 8
#if (STM32_NGPIO > 8) && (defined(CONFIG_STM32_HAVE_GPIOI))
| RCC_AHB4ENR_GPIOIEN
#endif
#if STM32_NGPIO > 9