diff options
-rw-r--r-- | bsps/aarch64/raspberrypi/include/bsp/irq.h | 14 | ||||
-rw-r--r-- | bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h | 9 | ||||
-rw-r--r-- | spec/build/bsps/aarch64/grp.yml | 3 | ||||
-rw-r--r-- | spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml | 6 | ||||
-rw-r--r-- | spec/build/bsps/aarch64/raspberrypi/objclock.yml | 31 | ||||
-rw-r--r-- | spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml | 23 | ||||
-rw-r--r-- | spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml | 25 | ||||
-rw-r--r-- | testsuites/validation/tr-mtx-seize-wait.c | 2 |
8 files changed, 102 insertions, 11 deletions
diff --git a/bsps/aarch64/raspberrypi/include/bsp/irq.h b/bsps/aarch64/raspberrypi/include/bsp/irq.h index 1ff6ae80de..d493e83707 100644 --- a/bsps/aarch64/raspberrypi/include/bsp/irq.h +++ b/bsps/aarch64/raspberrypi/include/bsp/irq.h @@ -9,6 +9,7 @@ /** * Copyright (c) 2013 Alan Cudmore * Copyright (c) 2022 Mohd Noor Aman + * Copyright (c) 2024 Ning Yang * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -33,15 +34,18 @@ * @brief Interrupt support. */ -#define BCM2835_INTC_TOTAL_IRQ (64 + 8) +#define BCM2835_INTC_TOTAL_IRQ 216 #define BCM2835_IRQ_SET1_MIN 0 #define BCM2835_IRQ_SET2_MIN 32 -#define BCM2835_IRQ_ID_GPU_TIMER_M0 0 -#define BCM2835_IRQ_ID_GPU_TIMER_M1 1 -#define BCM2835_IRQ_ID_GPU_TIMER_M2 2 -#define BCM2835_IRQ_ID_GPU_TIMER_M3 3 +#define BCM2711_IRQ_VC_PERIPHERAL_BASE 96 + +/* Interrupt Vectors: System Timer */ +#define BCM2835_IRQ_ID_GPU_TIMER_M0 (BCM2711_IRQ_VC_PERIPHERAL_BASE + 0) +#define BCM2835_IRQ_ID_GPU_TIMER_M1 (BCM2711_IRQ_VC_PERIPHERAL_BASE + 1) +#define BCM2835_IRQ_ID_GPU_TIMER_M2 (BCM2711_IRQ_VC_PERIPHERAL_BASE + 2) +#define BCM2835_IRQ_ID_GPU_TIMER_M3 (BCM2711_IRQ_VC_PERIPHERAL_BASE + 3) #define BCM2835_IRQ_ID_USB 9 #define BCM2835_IRQ_ID_AUX 29 diff --git a/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h b/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h index 55dd9ed1e9..f185d1df57 100644 --- a/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h +++ b/bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h @@ -8,6 +8,7 @@ /* * Copyright (c) 2022 Mohd Noor Aman + * Copyright (c) 2024 Ning Yang * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at @@ -44,6 +45,7 @@ #define BCM2711_REG(x) (*(volatile uint64_t *)(x)) #define BCM2711_BIT(n) (1 << (n)) +#define BCM2835_REG(addr) (*(volatile uint32_t*)(addr)) /** @} */ @@ -198,6 +200,13 @@ #define BCM2711_GPU_TIMER_C2 (BCM2711_GPU_TIMER_BASE + 0x14) #define BCM2711_GPU_TIMER_C3 (BCM2711_GPU_TIMER_BASE + 0x18) +/** + * NOTE: compatible with the BCM2835 system timer + */ +#define BCM2835_GPU_TIMER_CS_M3 BCM2711_GPU_TIMER_CS_M3 +#define BCM2835_GPU_TIMER_C3 BCM2711_GPU_TIMER_C3 +#define BCM2835_GPU_TIMER_CLO BCM2711_GPU_TIMER_CLO +#define BCM2835_GPU_TIMER_CS BCM2711_GPU_TIMER_CS /** @} */ /** diff --git a/spec/build/bsps/aarch64/grp.yml b/spec/build/bsps/aarch64/grp.yml index 9428fb9435..8f40a9952e 100644 --- a/spec/build/bsps/aarch64/grp.yml +++ b/spec/build/bsps/aarch64/grp.yml @@ -12,9 +12,6 @@ install: source: - bsps/aarch64/include/bsp/linker-symbols.h - bsps/aarch64/include/bsp/start.h -- destination: ${BSP_INCLUDEDIR}/dev/clock - source: - - bsps/include/dev/clock/arm-generic-timer.h - destination: ${BSP_INCLUDEDIR}/dev/irq source: - bsps/aarch64/include/dev/irq/arm-gic-arch.h diff --git a/spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml b/spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml index a579c094ba..7b6511a8cc 100644 --- a/spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml +++ b/spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml @@ -20,6 +20,10 @@ install: - bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h links: - role: build-dependency + uid: objclock +- role: build-dependency + uid: objsystemtimer +- role: build-dependency uid: ../grp - role: build-dependency uid: ../start @@ -50,10 +54,8 @@ source: - bsps/aarch64/raspberrypi/start/bspstart.c - bsps/aarch64/raspberrypi/start/bspstarthooks.c - bsps/aarch64/raspberrypi/start/bspstartmmu.c -- bsps/aarch64/shared/clock/arm-generic-timer-aarch64.c - bsps/aarch64/shared/cache/cache.c - bsps/aarch64/shared/mmu/vmsav8-64.c -- bsps/shared/dev/clock/arm-generic-timer.c - bsps/shared/dev/irq/arm-gicv2.c - bsps/shared/dev/irq/arm-gicv2-get-attributes.c - bsps/shared/dev/serial/console-termios-init.c diff --git a/spec/build/bsps/aarch64/raspberrypi/objclock.yml b/spec/build/bsps/aarch64/raspberrypi/objclock.yml new file mode 100644 index 0000000000..24f61c93c4 --- /dev/null +++ b/spec/build/bsps/aarch64/raspberrypi/objclock.yml @@ -0,0 +1,31 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: + - Copyright (C) 2022 Mohd Noor Aman + - Copyright (C) 2023 Utkarsh Verma + - Copyright (C) 2024 Ning Yang + +type: build +enabled-by: + not: BSP_CLOCK_USE_SYSTEMTIMER + +build-type: objects +cflags: [] +cppflags: [] +cxxflags: [] +includes: [] +install: +- destination: ${BSP_INCLUDEDIR}/dev/clock + source: + - bsps/include/dev/clock/arm-generic-timer.h + +source: + - bsps/aarch64/shared/clock/arm-generic-timer-aarch64.c + - bsps/shared/dev/clock/arm-generic-timer.c + +links: + - role: build-dependency + uid: ../optgtusevirt + - role: build-dependency + uid: ../optgtuseps + - role: build-dependency + uid: optsystemtimer
\ No newline at end of file diff --git a/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml b/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml new file mode 100644 index 0000000000..1ead15fdd5 --- /dev/null +++ b/spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml @@ -0,0 +1,23 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: + - Copyright (C) 2024 Ning Yang + +type: build +enabled-by: +- BSP_CLOCK_USE_SYSTEMTIMER + +build-type: objects +cflags: [] +cppflags: [] +cxxflags: [] +includes: [] +install: [] + +source: + - bsps/shared/dev/clock/bcm2835-system-timer.c + - bsps/shared/dev/cpucounter/cpucounterfrequency.c + - bsps/shared/dev/cpucounter/cpucounterread.c + +links: + - role: build-dependency + uid: optsystemtimer
\ No newline at end of file diff --git a/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml b/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml new file mode 100644 index 0000000000..c20371ab8b --- /dev/null +++ b/spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml @@ -0,0 +1,25 @@ +SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause +copyrights: + - Copyright (C) 2024 Ning Yang + +type: build +build-type: option + +enabled-by: true +name: BSP_CLOCK_USE_SYSTEMTIMER +description: | + The clock from the ARM timer is derived from the system clock. This clock can + change dynamically e.g. if the system goes into reduced power or in low power + mode. Thus the clock speed adapts to the overall system performance + capabilities. For accurate timing it is recommended to use the system timers. + +actions: + - get-boolean: null + - define-condition: null + - env-enable: null +default: + - enabled-by: + - aarch64/raspberrypi4b + value: false + +links: []
\ No newline at end of file diff --git a/testsuites/validation/tr-mtx-seize-wait.c b/testsuites/validation/tr-mtx-seize-wait.c index fa369e43db..2e2fe9d1ec 100644 --- a/testsuites/validation/tr-mtx-seize-wait.c +++ b/testsuites/validation/tr-mtx-seize-wait.c @@ -710,7 +710,7 @@ static void ScoreMtxReqSeizeWait_Post_Enqueued_Check( case ScoreMtxReqSeizeWait_Post_Enqueued_PriorityInherit: { /* - * The calling thread shall be enqueued in priority order with priorit + * The calling thread shall be enqueued in priority order with priority * inheritance. */ ScoreTqReqEnqueuePriorityInherit_Run( &ctx->tq_ctx->base ); |