From d1f1f4bfebb2334e28337c3806969249ec9aad67 Mon Sep 17 00:00:00 2001 From: Michael Zill Date: Thu, 4 Apr 2024 08:49:36 +0200 Subject: [PATCH] Arrayfied v1 and v8 - preliminary fix for missing HSEM in Cube XML --- .gitignore | 1 + data/registers/hsem_v1.yaml | 566 ++--------------------- data/registers/hsem_v8.yaml | 900 +----------------------------------- stm32-data-gen/src/chips.rs | 35 +- 4 files changed, 92 insertions(+), 1410 deletions(-) diff --git a/.gitignore b/.gitignore index d094026..980f11a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /sources /tmp .idea/ +.DS_Store # transform*.yaml __pycache__ diff --git a/data/registers/hsem_v1.yaml b/data/registers/hsem_v1.yaml index fac9bae..ecb7662 100644 --- a/data/registers/hsem_v1.yaml +++ b/data/registers/hsem_v1.yaml @@ -1,5 +1,5 @@ block/HSEM: - description: HSEM. + description: Hardware semaphore (HSEM). items: - name: R description: HSEM register HSEM_R%s HSEM_R31. @@ -16,25 +16,44 @@ block/HSEM: byte_offset: 128 access: Read fieldset: RLR - - name: IER + - name: C1IER description: HSEM Interrupt enable register. byte_offset: 256 fieldset: IER - - name: ICR + - name: C1ICR description: HSEM Interrupt clear register. byte_offset: 260 access: Read fieldset: ICR - - name: ISR + - name: C1ISR description: HSEM Interrupt status register. byte_offset: 264 access: Read fieldset: ISR - - name: MISR + - name: C1MISR description: HSEM Masked interrupt status register. byte_offset: 268 access: Read fieldset: MISR + - name: C2IER + description: HSEM Interrupt enable register. + byte_offset: 272 + fieldset: IER + - name: C2ICR + description: HSEM Interrupt clear register. + byte_offset: 276 + access: Read + fieldset: ICR + - name: C2ISR + description: HSEM Interrupt status register. + byte_offset: 280 + access: Read + fieldset: ISR + - name: C2MISR + description: HSEM Masked interrupt status register. + byte_offset: 284 + access: Read + fieldset: MISR - name: CR description: HSEM Clear register. byte_offset: 320 @@ -46,8 +65,8 @@ block/HSEM: fieldset/CR: description: HSEM Clear register. fields: - - name: MASTERID - description: MasterID of semaphores to be cleared. + - name: COREID + description: COREID of semaphores to be cleared. bit_offset: 8 bit_size: 8 - name: KEY @@ -57,396 +76,34 @@ fieldset/CR: fieldset/ICR: description: HSEM Interrupt clear register. fields: - - name: ISEM0 - description: Interrupt(N) semaphore n clear bit. + - name: ISC + description: Interrupt semaphore x clear bit. bit_offset: 0 bit_size: 1 - - name: ISEM1 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 1 - bit_size: 1 - - name: ISEM2 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 2 - bit_size: 1 - - name: ISEM3 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 3 - bit_size: 1 - - name: ISEM4 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 4 - bit_size: 1 - - name: ISEM5 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 5 - bit_size: 1 - - name: ISEM6 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 6 - bit_size: 1 - - name: ISEM7 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 7 - bit_size: 1 - - name: ISEM8 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 8 - bit_size: 1 - - name: ISEM9 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 9 - bit_size: 1 - - name: ISEM10 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 10 - bit_size: 1 - - name: ISEM11 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 11 - bit_size: 1 - - name: ISEM12 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 12 - bit_size: 1 - - name: ISEM13 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 13 - bit_size: 1 - - name: ISEM14 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 14 - bit_size: 1 - - name: ISEM15 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 15 - bit_size: 1 - - name: ISEM16 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 16 - bit_size: 1 - - name: ISEM17 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 17 - bit_size: 1 - - name: ISEM18 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 18 - bit_size: 1 - - name: ISEM19 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 19 - bit_size: 1 - - name: ISEM20 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 20 - bit_size: 1 - - name: ISEM21 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 21 - bit_size: 1 - - name: ISEM22 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 22 - bit_size: 1 - - name: ISEM23 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 23 - bit_size: 1 - - name: ISEM24 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 24 - bit_size: 1 - - name: ISEM25 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 25 - bit_size: 1 - - name: ISEM26 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 26 - bit_size: 1 - - name: ISEM27 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 27 - bit_size: 1 - - name: ISEM28 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 28 - bit_size: 1 - - name: ISEM29 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 29 - bit_size: 1 - - name: ISEM30 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 30 - bit_size: 1 - - name: ISEM31 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 31 - bit_size: 1 + array: + len: 32 + stride: 1 fieldset/IER: description: HSEM Interrupt enable register. fields: - - name: ISEM0 - description: Interrupt semaphore n enable bit. + - name: ISE + description: Interrupt semaphore x enable bit. bit_offset: 0 bit_size: 1 - - name: ISEM1 - description: Interrupt semaphore n enable bit. - bit_offset: 1 - bit_size: 1 - - name: ISEM2 - description: Interrupt semaphore n enable bit. - bit_offset: 2 - bit_size: 1 - - name: ISEM3 - description: Interrupt semaphore n enable bit. - bit_offset: 3 - bit_size: 1 - - name: ISEM4 - description: Interrupt semaphore n enable bit. - bit_offset: 4 - bit_size: 1 - - name: ISEM5 - description: Interrupt semaphore n enable bit. - bit_offset: 5 - bit_size: 1 - - name: ISEM6 - description: Interrupt semaphore n enable bit. - bit_offset: 6 - bit_size: 1 - - name: ISEM7 - description: Interrupt semaphore n enable bit. - bit_offset: 7 - bit_size: 1 - - name: ISEM8 - description: Interrupt semaphore n enable bit. - bit_offset: 8 - bit_size: 1 - - name: ISEM9 - description: Interrupt semaphore n enable bit. - bit_offset: 9 - bit_size: 1 - - name: ISEM10 - description: Interrupt semaphore n enable bit. - bit_offset: 10 - bit_size: 1 - - name: ISEM11 - description: Interrupt semaphore n enable bit. - bit_offset: 11 - bit_size: 1 - - name: ISEM12 - description: Interrupt semaphore n enable bit. - bit_offset: 12 - bit_size: 1 - - name: ISEM13 - description: Interrupt semaphore n enable bit. - bit_offset: 13 - bit_size: 1 - - name: ISEM14 - description: Interrupt semaphore n enable bit. - bit_offset: 14 - bit_size: 1 - - name: ISEM15 - description: Interrupt semaphore n enable bit. - bit_offset: 15 - bit_size: 1 - - name: ISEM16 - description: Interrupt semaphore n enable bit. - bit_offset: 16 - bit_size: 1 - - name: ISEM17 - description: Interrupt semaphore n enable bit. - bit_offset: 17 - bit_size: 1 - - name: ISEM18 - description: Interrupt semaphore n enable bit. - bit_offset: 18 - bit_size: 1 - - name: ISEM19 - description: Interrupt semaphore n enable bit. - bit_offset: 19 - bit_size: 1 - - name: ISEM20 - description: Interrupt semaphore n enable bit. - bit_offset: 20 - bit_size: 1 - - name: ISEM21 - description: Interrupt semaphore n enable bit. - bit_offset: 21 - bit_size: 1 - - name: ISEM22 - description: Interrupt semaphore n enable bit. - bit_offset: 22 - bit_size: 1 - - name: ISEM23 - description: Interrupt semaphore n enable bit. - bit_offset: 23 - bit_size: 1 - - name: ISEM24 - description: Interrupt semaphore n enable bit. - bit_offset: 24 - bit_size: 1 - - name: ISEM25 - description: Interrupt semaphore n enable bit. - bit_offset: 25 - bit_size: 1 - - name: ISEM26 - description: Interrupt semaphore n enable bit. - bit_offset: 26 - bit_size: 1 - - name: ISEM27 - description: Interrupt semaphore n enable bit. - bit_offset: 27 - bit_size: 1 - - name: ISEM28 - description: Interrupt semaphore n enable bit. - bit_offset: 28 - bit_size: 1 - - name: ISEM29 - description: Interrupt semaphore n enable bit. - bit_offset: 29 - bit_size: 1 - - name: ISEM30 - description: Interrupt semaphore n enable bit. - bit_offset: 30 - bit_size: 1 - - name: ISEM31 - description: Interrupt(N) semaphore n enable bit. - bit_offset: 31 - bit_size: 1 + array: + len: 32 + stride: 1 fieldset/ISR: description: HSEM Interrupt status register. fields: - - name: ISEM0 - description: Interrupt(N) semaphore n status bit before enable (mask). + - name: ISF + description: Interrupt semaphore x status bit before enable (mask). bit_offset: 0 bit_size: 1 - - name: ISEM1 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 1 - bit_size: 1 - - name: ISEM2 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 2 - bit_size: 1 - - name: ISEM3 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 3 - bit_size: 1 - - name: ISEM4 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 4 - bit_size: 1 - - name: ISEM5 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 5 - bit_size: 1 - - name: ISEM6 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 6 - bit_size: 1 - - name: ISEM7 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 7 - bit_size: 1 - - name: ISEM8 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 8 - bit_size: 1 - - name: ISEM9 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 9 - bit_size: 1 - - name: ISEM10 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 10 - bit_size: 1 - - name: ISEM11 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 11 - bit_size: 1 - - name: ISEM12 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 12 - bit_size: 1 - - name: ISEM13 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 13 - bit_size: 1 - - name: ISEM14 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 14 - bit_size: 1 - - name: ISEM15 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 15 - bit_size: 1 - - name: ISEM16 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 16 - bit_size: 1 - - name: ISEM17 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 17 - bit_size: 1 - - name: ISEM18 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 18 - bit_size: 1 - - name: ISEM19 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 19 - bit_size: 1 - - name: ISEM20 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 20 - bit_size: 1 - - name: ISEM21 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 21 - bit_size: 1 - - name: ISEM22 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 22 - bit_size: 1 - - name: ISEM23 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 23 - bit_size: 1 - - name: ISEM24 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 24 - bit_size: 1 - - name: ISEM25 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 25 - bit_size: 1 - - name: ISEM26 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 26 - bit_size: 1 - - name: ISEM27 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 27 - bit_size: 1 - - name: ISEM28 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 28 - bit_size: 1 - - name: ISEM29 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 29 - bit_size: 1 - - name: ISEM30 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 30 - bit_size: 1 - - name: ISEM31 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 31 - bit_size: 1 + array: + len: 32 + stride: 1 + fieldset/KEYR: description: HSEM Interrupt clear register. fields: @@ -457,134 +114,13 @@ fieldset/KEYR: fieldset/MISR: description: HSEM Masked interrupt status register. fields: - - name: ISEM0 - description: masked interrupt(N) semaphore n status bit after enable (mask). + - name: MISF + description: masked interrupt semaphore x status bit after enable (mask). bit_offset: 0 bit_size: 1 - - name: ISEM1 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 1 - bit_size: 1 - - name: ISEM2 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 2 - bit_size: 1 - - name: ISEM3 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 3 - bit_size: 1 - - name: ISEM4 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 4 - bit_size: 1 - - name: ISEM5 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 5 - bit_size: 1 - - name: ISEM6 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 6 - bit_size: 1 - - name: ISEM7 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 7 - bit_size: 1 - - name: ISEM8 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 8 - bit_size: 1 - - name: ISEM9 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 9 - bit_size: 1 - - name: ISEM10 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 10 - bit_size: 1 - - name: ISEM11 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 11 - bit_size: 1 - - name: ISEM12 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 12 - bit_size: 1 - - name: ISEM13 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 13 - bit_size: 1 - - name: ISEM14 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 14 - bit_size: 1 - - name: ISEM15 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 15 - bit_size: 1 - - name: ISEM16 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 16 - bit_size: 1 - - name: ISEM17 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 17 - bit_size: 1 - - name: ISEM18 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 18 - bit_size: 1 - - name: ISEM19 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 19 - bit_size: 1 - - name: ISEM20 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 20 - bit_size: 1 - - name: ISEM21 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 21 - bit_size: 1 - - name: ISEM22 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 22 - bit_size: 1 - - name: ISEM23 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 23 - bit_size: 1 - - name: ISEM24 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 24 - bit_size: 1 - - name: ISEM25 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 25 - bit_size: 1 - - name: ISEM26 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 26 - bit_size: 1 - - name: ISEM27 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 27 - bit_size: 1 - - name: ISEM28 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 28 - bit_size: 1 - - name: ISEM29 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 29 - bit_size: 1 - - name: ISEM30 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 30 - bit_size: 1 - - name: ISEM31 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 31 - bit_size: 1 + array: + len: 32 + stride: 1 fieldset/R: description: HSEM register HSEM_R%s HSEM_R31. fields: @@ -592,8 +128,8 @@ fieldset/R: description: Semaphore ProcessID. bit_offset: 0 bit_size: 8 - - name: MASTERID - description: Semaphore MasterID. + - name: COREID + description: Semaphore COREID. bit_offset: 8 bit_size: 8 - name: LOCK @@ -607,8 +143,8 @@ fieldset/RLR: description: Semaphore ProcessID. bit_offset: 0 bit_size: 8 - - name: MASTERID - description: Semaphore MasterID. + - name: COREID + description: Semaphore COREID. bit_offset: 8 bit_size: 8 - name: LOCK diff --git a/data/registers/hsem_v8.yaml b/data/registers/hsem_v8.yaml index d22a66d..3505637 100644 --- a/data/registers/hsem_v8.yaml +++ b/data/registers/hsem_v8.yaml @@ -46,335 +46,43 @@ block/HSEM: fieldset/C1ICR: description: HSEM Interrupt clear register. fields: - - name: ISC0 + - name: ISC description: Interrupt(N) semaphore n clear bit. bit_offset: 0 bit_size: 1 - enum: ISC0 - - name: ISC1 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 1 - bit_size: 1 - enum: ISC1 - - name: ISC2 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 2 - bit_size: 1 - enum: ISC2 - - name: ISC3 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 3 - bit_size: 1 - enum: ISC3 - - name: ISC4 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 4 - bit_size: 1 - enum: ISC4 - - name: ISC5 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 5 - bit_size: 1 - enum: ISC5 - - name: ISC6 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 6 - bit_size: 1 - enum: ISC6 - - name: ISC7 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 7 - bit_size: 1 - enum: ISC7 - - name: ISC8 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 8 - bit_size: 1 - enum: ISC8 - - name: ISC9 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 9 - bit_size: 1 - enum: ISC9 - - name: ISC10 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 10 - bit_size: 1 - enum: ISC10 - - name: ISC11 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 11 - bit_size: 1 - enum: ISC11 - - name: ISC12 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 12 - bit_size: 1 - enum: ISC12 - - name: ISC13 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 13 - bit_size: 1 - enum: ISC13 - - name: ISC14 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 14 - bit_size: 1 - enum: ISC14 - - name: ISC15 - description: Interrupt(N) semaphore n clear bit. - bit_offset: 15 - bit_size: 1 - enum: ISC15 + array: + len: 16 + stride: 1 fieldset/C1IER: description: HSEM Interrupt enable register. fields: - - name: ISE0 + - name: ISE description: Interrupt semaphore n enable bit. bit_offset: 0 bit_size: 1 - enum: ISE0 - - name: ISE1 - description: Interrupt semaphore n enable bit. - bit_offset: 1 - bit_size: 1 - enum: ISE1 - - name: ISE2 - description: Interrupt semaphore n enable bit. - bit_offset: 2 - bit_size: 1 - enum: ISE2 - - name: ISE3 - description: Interrupt semaphore n enable bit. - bit_offset: 3 - bit_size: 1 - enum: ISE3 - - name: ISE4 - description: Interrupt semaphore n enable bit. - bit_offset: 4 - bit_size: 1 - enum: ISE4 - - name: ISE5 - description: Interrupt semaphore n enable bit. - bit_offset: 5 - bit_size: 1 - enum: ISE5 - - name: ISE6 - description: Interrupt semaphore n enable bit. - bit_offset: 6 - bit_size: 1 - enum: ISE6 - - name: ISE7 - description: Interrupt semaphore n enable bit. - bit_offset: 7 - bit_size: 1 - enum: ISE7 - - name: ISE8 - description: Interrupt semaphore n enable bit. - bit_offset: 8 - bit_size: 1 - enum: ISE8 - - name: ISE9 - description: Interrupt semaphore n enable bit. - bit_offset: 9 - bit_size: 1 - enum: ISE9 - - name: ISE10 - description: Interrupt semaphore n enable bit. - bit_offset: 10 - bit_size: 1 - enum: ISE10 - - name: ISE11 - description: Interrupt semaphore n enable bit. - bit_offset: 11 - bit_size: 1 - enum: ISE11 - - name: ISE12 - description: Interrupt semaphore n enable bit. - bit_offset: 12 - bit_size: 1 - enum: ISE12 - - name: ISE13 - description: Interrupt semaphore n enable bit. - bit_offset: 13 - bit_size: 1 - enum: ISE13 - - name: ISE14 - description: Interrupt semaphore n enable bit. - bit_offset: 14 - bit_size: 1 - enum: ISE14 - - name: ISE15 - description: Interrupt semaphore n enable bit. - bit_offset: 15 - bit_size: 1 - enum: ISE15 + array: + len: 16 + stride: 1 fieldset/C1ISR: description: HSEM Interrupt status register. fields: - - name: ISF0 + - name: ISF description: Interrupt(N) semaphore n status bit before enable (mask). bit_offset: 0 bit_size: 1 - enum: ISF0 - - name: ISF1 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 1 - bit_size: 1 - enum: ISF1 - - name: ISF2 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 2 - bit_size: 1 - enum: ISF2 - - name: ISF3 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 3 - bit_size: 1 - enum: ISF3 - - name: ISF4 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 4 - bit_size: 1 - enum: ISF4 - - name: ISF5 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 5 - bit_size: 1 - enum: ISF5 - - name: ISF6 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 6 - bit_size: 1 - enum: ISF6 - - name: ISF7 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 7 - bit_size: 1 - enum: ISF7 - - name: ISF8 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 8 - bit_size: 1 - enum: ISF8 - - name: ISF9 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 9 - bit_size: 1 - enum: ISF9 - - name: ISF10 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 10 - bit_size: 1 - enum: ISF10 - - name: ISF11 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 11 - bit_size: 1 - enum: ISF11 - - name: ISF12 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 12 - bit_size: 1 - enum: ISF12 - - name: ISF13 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 13 - bit_size: 1 - enum: ISF13 - - name: ISF14 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 14 - bit_size: 1 - enum: ISF14 - - name: ISF15 - description: Interrupt(N) semaphore n status bit before enable (mask). - bit_offset: 15 - bit_size: 1 - enum: ISF15 + array: + len: 16 + stride: 1 fieldset/C1MISR: description: HSEM Masked interrupt status register. fields: - - name: MISF0 + - name: MISF description: masked interrupt(N) semaphore n status bit after enable (mask). bit_offset: 0 bit_size: 1 - enum: MISF0 - - name: MISF1 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 1 - bit_size: 1 - enum: MISF1 - - name: MISF2 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 2 - bit_size: 1 - enum: MISF2 - - name: MISF3 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 3 - bit_size: 1 - enum: MISF3 - - name: MISF4 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 4 - bit_size: 1 - enum: MISF4 - - name: MISF5 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 5 - bit_size: 1 - enum: MISF5 - - name: MISF6 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 6 - bit_size: 1 - enum: MISF6 - - name: MISF7 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 7 - bit_size: 1 - enum: MISF7 - - name: MISF8 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 8 - bit_size: 1 - enum: MISF8 - - name: MISF9 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 9 - bit_size: 1 - enum: MISF9 - - name: MISF10 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 10 - bit_size: 1 - enum: MISF10 - - name: MISF11 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 11 - bit_size: 1 - enum: MISF11 - - name: MISF12 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 12 - bit_size: 1 - enum: MISF12 - - name: MISF13 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 13 - bit_size: 1 - enum: MISF13 - - name: MISF14 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 14 - bit_size: 1 - enum: MISF14 - - name: MISF15 - description: masked interrupt(N) semaphore n status bit after enable (mask). - bit_offset: 15 - bit_size: 1 - enum: MISF15 + array: + len: 16 + stride: 1 fieldset/CR: description: HSEM Clear register. fields: @@ -425,582 +133,6 @@ fieldset/RLR: bit_offset: 31 bit_size: 1 enum: RLR_LOCK -enum/ISC0: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC1: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC10: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC11: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC12: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC13: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC14: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC15: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC2: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC3: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC4: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC5: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC6: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC7: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC8: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISC9: - bit_size: 1 - variants: - - name: NoEffect - description: Always reads 0. - value: 0 - - name: Clear - description: Interrupt semaphore x status ISFx and masked status MISFx cleared. - value: 1 -enum/ISE0: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE1: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE10: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE11: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE12: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE13: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE14: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE15: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE2: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE3: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE4: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE5: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE6: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE7: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE8: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISE9: - bit_size: 1 - variants: - - name: Disabled - description: Interrupt generation disabled. - value: 0 - - name: Enabled - description: Interrupt generation enabled. - value: 1 -enum/ISF0: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF1: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF10: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF11: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF12: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF13: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF14: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF15: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF2: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF3: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF4: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF5: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF6: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF7: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF8: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/ISF9: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending. - value: 0 - - name: Pending - description: Interrupt pending. - value: 1 -enum/MISF0: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF1: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF10: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF11: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF12: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF13: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF14: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF15: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF2: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF3: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF4: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF5: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF6: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF7: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF8: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 -enum/MISF9: - bit_size: 1 - variants: - - name: NotPending - description: No interrupt pending after masking. - value: 0 - - name: Pending - description: Interrupt pending after masking. - value: 1 enum/RLR_LOCK: bit_size: 1 variants: diff --git a/stm32-data-gen/src/chips.rs b/stm32-data-gen/src/chips.rs index f1ff781..c8535b0 100644 --- a/stm32-data-gen/src/chips.rs +++ b/stm32-data-gen/src/chips.rs @@ -1,6 +1,7 @@ use std::collections::hash_map::Entry; use std::collections::{HashMap, HashSet}; +use log::info; use stm32_data_serde::chip::core::peripheral::Pin; use super::*; @@ -535,17 +536,8 @@ impl PeriMatcher { ("STM32F1.*:GPIO.*", ("gpio", "v1", "GPIO")), (".*:GPIO.*", ("gpio", "v2", "GPIO")), (".*:IPCC:v1_0", ("ipcc", "v1", "IPCC")), - ("STM32H747.*:HSEM:*", ("hsem", "v1", "HSEM")), - ("STM32H7b3.*:HSEM:*", ("hsem", "v3", "HSEM")), - ("STM32H753.*:HSEM:*", ("hsem", "v3", "HSEM")), - ("STM32H753v.*:HSEM:*", ("hsem", "v3", "HSEM")), - ("STM32H743.*:HSEM:*", ("hsem", "v3", "HSEM")), - ("STM32H743v.*:HSEM:*", ("hsem", "v3", "HSEM")), - ("STM32MP157.*:HSEM:*", ("hsem", "v4", "HSEM")), - ("STM32MP153.*:HSEM:*", ("hsem", "v4", "HSEM")), - ("STM32WA55.*:HSEM:*", ("hsem", "v6", "HSEM")), - ("STM32WL5.*:HSEM:*", ("hsem", "v7", "HSEM")), - ("STM32WLE.*:HSEM:*", ("hsem", "v8", "HSEM")), + ("STM32H7(4|5)(5|7).*:HSEM:.*", ("hsem", "v1", "HSEM")), + ("STM32WLE.*:HSEM:.*", ("hsem", "v8", "HSEM")), (".*:DMAMUX.*", ("dmamux", "v1", "DMAMUX")), (r".*:GPDMA\d?:.*", ("gpdma", "v1", "GPDMA")), (r".*:BDMA\d?:.*", ("bdma", "v1", "DMA")), @@ -923,6 +915,24 @@ fn process_group( let chip_af = &group.ips.values().find(|x| x.name == "GPIO").unwrap().version; let chip_af = chip_af.strip_suffix("_gpio_v1_0").unwrap(); let chip_af = af.0.get(chip_af); + + // HSEM is missing in the Cube XML files for these chips - we need to add it manually + if chip_name.starts_with("STM32H745") + || chip_name.starts_with("STM32H747") + || chip_name.starts_with("STM32H755") + || chip_name.starts_with("STM32H757") + { + info!("Patching HSEM in IPS for {}", chip_name); + group.ips.insert( + "HSEM".to_string(), + xml::Ip { + name: "HSEM".to_string(), + version: "hsem1_v1_0_Cube".to_string(), + instance_name: "HSEM".to_string(), + }, + ); + } + let cores: Vec<_> = group .xml .cores @@ -1017,6 +1027,9 @@ fn process_core( entry.insert(format!("ADC3_COMMON:{}", ip.version.strip_suffix("_Cube").unwrap())); } } + if pname.starts_with("HSEM") && chip_name.starts_with("STM327") { + info!("******* HSEM *******") + } peri_kinds.insert(pname, pkind.to_string()); } const GHOST_PERIS: &[&str] = &[