From b375ff4a72fcefe36620286834d15a1ff06604fa Mon Sep 17 00:00:00 2001 From: Johannes Wirth Date: Tue, 24 Jun 2025 17:00:24 +0200 Subject: [PATCH] Add fmc clock divider to sysctrl --- include/ehrenberg/devices/gen/sysctrl.h | 132 ++++++++++++++++-------- 1 file changed, 90 insertions(+), 42 deletions(-) diff --git a/include/ehrenberg/devices/gen/sysctrl.h b/include/ehrenberg/devices/gen/sysctrl.h index b03b087..a0f972b 100644 --- a/include/ehrenberg/devices/gen/sysctrl.h +++ b/include/ehrenberg/devices/gen/sysctrl.h @@ -1,11 +1,11 @@ /* - * Copyright (c) 2023 - 2025 MINRES Technologies GmbH - * - * SPDX-License-Identifier: Apache-2.0 - * - * Generated at 2025-02-19 17:15:41 UTC - * by peakrdl_mnrs version 1.2.9 - */ +* Copyright (c) 2023 - 2025 MINRES Technologies GmbH +* +* SPDX-License-Identifier: Apache-2.0 +* +* Generated at 2025-06-23 15:39:49 UTC +* by peakrdl_mnrs version 1.2.9 +*/ #ifndef _BSP_SYSCTRL_H #define _BSP_SYSCTRL_H @@ -13,10 +13,11 @@ #include typedef struct { - volatile uint32_t SYSCTRL; - volatile uint32_t PLLCTRL; - volatile uint32_t AXI_BACKUP; -} sysctrl_t; + volatile uint32_t SYSCTRL; + volatile uint32_t PLLCTRL; + volatile uint32_t AXI_BACKUP; + volatile uint32_t FMCDIV; +}sysctrl_t; #define SYSCTRL_SYSCTRL_CC0_RESET_OFFS 0 #define SYSCTRL_SYSCTRL_CC0_RESET_MASK 0x3 @@ -50,45 +51,92 @@ typedef struct { #define SYSCTRL_AXI_BACKUP_MASK 0x1f #define SYSCTRL_AXI_BACKUP(V) ((V & SYSCTRL_AXI_BACKUP_MASK) << SYSCTRL_AXI_BACKUP_OFFS) -// SYSCTRL_SYSCTRL -static inline uint32_t get_sysctrl_sysctrl(volatile sysctrl_t* reg) { return reg->SYSCTRL; } -static inline void set_sysctrl_sysctrl(volatile sysctrl_t* reg, uint32_t value) { reg->SYSCTRL = value; } -static inline uint32_t get_sysctrl_sysctrl_cc0_reset(volatile sysctrl_t* reg) { return (reg->SYSCTRL >> 0) & 0x3; } -static inline void set_sysctrl_sysctrl_cc0_reset(volatile sysctrl_t* reg, uint8_t value) { - reg->SYSCTRL = (reg->SYSCTRL & ~(0x3U << 0)) | (value << 0); +#define SYSCTRL_FMCDIV_FMCDIVVALID_OFFS 0 +#define SYSCTRL_FMCDIV_FMCDIVVALID_MASK 0x1 +#define SYSCTRL_FMCDIV_FMCDIVVALID(V) ((V & SYSCTRL_FMCDIV_FMCDIVVALID_MASK) << SYSCTRL_FMCDIV_FMCDIVVALID_OFFS) + +#define SYSCTRL_FMCDIV_FMCDIVFACTOR_OFFS 1 +#define SYSCTRL_FMCDIV_FMCDIVFACTOR_MASK 0xf +#define SYSCTRL_FMCDIV_FMCDIVFACTOR(V) ((V & SYSCTRL_FMCDIV_FMCDIVFACTOR_MASK) << SYSCTRL_FMCDIV_FMCDIVFACTOR_OFFS) + +//SYSCTRL_SYSCTRL +inline uint32_t get_sysctrl_sysctrl(volatile sysctrl_t* reg){ + return reg->SYSCTRL; } -static inline uint32_t get_sysctrl_sysctrl_cc1_reset(volatile sysctrl_t* reg) { return (reg->SYSCTRL >> 2) & 0x3; } -static inline void set_sysctrl_sysctrl_cc1_reset(volatile sysctrl_t* reg, uint8_t value) { - reg->SYSCTRL = (reg->SYSCTRL & ~(0x3U << 2)) | (value << 2); +inline void set_sysctrl_sysctrl(volatile sysctrl_t* reg, uint32_t value){ + reg->SYSCTRL = value; } -static inline uint32_t get_sysctrl_sysctrl_mem_reset(volatile sysctrl_t* reg) { return (reg->SYSCTRL >> 4) & 0x1; } -static inline void set_sysctrl_sysctrl_mem_reset(volatile sysctrl_t* reg, uint8_t value) { - reg->SYSCTRL = (reg->SYSCTRL & ~(0x1U << 4)) | (value << 4); +inline uint32_t get_sysctrl_sysctrl_cc0_reset(volatile sysctrl_t* reg){ + return (reg->SYSCTRL >> 0) & 0x3; +} +inline void set_sysctrl_sysctrl_cc0_reset(volatile sysctrl_t* reg, uint8_t value){ + reg->SYSCTRL = (reg->SYSCTRL & ~(0x3U << 0)) | (value << 0); +} +inline uint32_t get_sysctrl_sysctrl_cc1_reset(volatile sysctrl_t* reg){ + return (reg->SYSCTRL >> 2) & 0x3; +} +inline void set_sysctrl_sysctrl_cc1_reset(volatile sysctrl_t* reg, uint8_t value){ + reg->SYSCTRL = (reg->SYSCTRL & ~(0x3U << 2)) | (value << 2); +} +inline uint32_t get_sysctrl_sysctrl_mem_reset(volatile sysctrl_t* reg){ + return (reg->SYSCTRL >> 4) & 0x1; +} +inline void set_sysctrl_sysctrl_mem_reset(volatile sysctrl_t* reg, uint8_t value){ + reg->SYSCTRL = (reg->SYSCTRL & ~(0x1U << 4)) | (value << 4); } -// SYSCTRL_PLLCTRL -static inline uint32_t get_sysctrl_pllctrl(volatile sysctrl_t* reg) { return reg->PLLCTRL; } -static inline void set_sysctrl_pllctrl(volatile sysctrl_t* reg, uint32_t value) { reg->PLLCTRL = value; } -static inline uint32_t get_sysctrl_pllctrl_p_counter(volatile sysctrl_t* reg) { return (reg->PLLCTRL >> 0) & 0x3f; } -static inline void set_sysctrl_pllctrl_p_counter(volatile sysctrl_t* reg, uint8_t value) { - reg->PLLCTRL = (reg->PLLCTRL & ~(0x3fU << 0)) | (value << 0); +//SYSCTRL_PLLCTRL +inline uint32_t get_sysctrl_pllctrl(volatile sysctrl_t* reg){ + return reg->PLLCTRL; } -static inline uint32_t get_sysctrl_pllctrl_s_counter(volatile sysctrl_t* reg) { return (reg->PLLCTRL >> 6) & 0x3; } -static inline void set_sysctrl_pllctrl_s_counter(volatile sysctrl_t* reg, uint8_t value) { - reg->PLLCTRL = (reg->PLLCTRL & ~(0x3U << 6)) | (value << 6); +inline void set_sysctrl_pllctrl(volatile sysctrl_t* reg, uint32_t value){ + reg->PLLCTRL = value; } -static inline uint32_t get_sysctrl_pllctrl_clk_sel(volatile sysctrl_t* reg) { return (reg->PLLCTRL >> 8) & 0x3; } -static inline void set_sysctrl_pllctrl_clk_sel(volatile sysctrl_t* reg, uint8_t value) { - reg->PLLCTRL = (reg->PLLCTRL & ~(0x3U << 8)) | (value << 8); +inline uint32_t get_sysctrl_pllctrl_p_counter(volatile sysctrl_t* reg){ + return (reg->PLLCTRL >> 0) & 0x3f; +} +inline void set_sysctrl_pllctrl_p_counter(volatile sysctrl_t* reg, uint8_t value){ + reg->PLLCTRL = (reg->PLLCTRL & ~(0x3fU << 0)) | (value << 0); +} +inline uint32_t get_sysctrl_pllctrl_s_counter(volatile sysctrl_t* reg){ + return (reg->PLLCTRL >> 6) & 0x3; +} +inline void set_sysctrl_pllctrl_s_counter(volatile sysctrl_t* reg, uint8_t value){ + reg->PLLCTRL = (reg->PLLCTRL & ~(0x3U << 6)) | (value << 6); +} +inline uint32_t get_sysctrl_pllctrl_clk_sel(volatile sysctrl_t* reg){ + return (reg->PLLCTRL >> 8) & 0x3; +} +inline void set_sysctrl_pllctrl_clk_sel(volatile sysctrl_t* reg, uint8_t value){ + reg->PLLCTRL = (reg->PLLCTRL & ~(0x3U << 8)) | (value << 8); +} +inline uint32_t get_sysctrl_pllctrl_locked(volatile sysctrl_t* reg){ + return (reg->PLLCTRL >> 31) & 0x1; } -static inline uint32_t get_sysctrl_pllctrl_locked(volatile sysctrl_t* reg) { return (reg->PLLCTRL >> 31) & 0x1; } -// SYSCTRL_AXI_BACKUP -static inline uint32_t get_sysctrl_axi_backup(volatile sysctrl_t* reg) { return reg->AXI_BACKUP; } -static inline void set_sysctrl_axi_backup(volatile sysctrl_t* reg, uint32_t value) { reg->AXI_BACKUP = value; } -static inline uint32_t get_sysctrl_axi_backup_page(volatile sysctrl_t* reg) { return (reg->AXI_BACKUP >> 0) & 0x1f; } -static inline void set_sysctrl_axi_backup_page(volatile sysctrl_t* reg, uint8_t value) { - reg->AXI_BACKUP = (reg->AXI_BACKUP & ~(0x1fU << 0)) | (value << 0); +//SYSCTRL_AXI_BACKUP +inline uint32_t get_sysctrl_axi_backup(volatile sysctrl_t* reg){ + return reg->AXI_BACKUP; +} +inline void set_sysctrl_axi_backup(volatile sysctrl_t* reg, uint32_t value){ + reg->AXI_BACKUP = value; +} +inline uint32_t get_sysctrl_axi_backup_page(volatile sysctrl_t* reg){ + return (reg->AXI_BACKUP >> 0) & 0x1f; +} +inline void set_sysctrl_axi_backup_page(volatile sysctrl_t* reg, uint8_t value){ + reg->AXI_BACKUP = (reg->AXI_BACKUP & ~(0x1fU << 0)) | (value << 0); +} + +//SYSCTRL_FMCDIV +inline void set_sysctrl_fmcdiv(volatile sysctrl_t* reg, uint32_t value){ + reg->FMCDIV = value; +} +inline void set_sysctrl_fmcdiv_fmcDivValid(volatile sysctrl_t* reg, uint8_t value){ + reg->FMCDIV = (reg->FMCDIV & ~(0x1U << 0)) | (value << 0); +} +inline void set_sysctrl_fmcdiv_fmcDivFactor(volatile sysctrl_t* reg, uint8_t value){ + reg->FMCDIV = (reg->FMCDIV & ~(0xfU << 1)) | (value << 1); } #endif /* _BSP_SYSCTRL_H */ \ No newline at end of file