summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--bsps/aarch64/raspberrypi/include/bsp/irq.h14
-rw-r--r--bsps/aarch64/raspberrypi/include/bsp/raspberrypi.h9
-rw-r--r--spec/build/bsps/aarch64/grp.yml3
-rw-r--r--spec/build/bsps/aarch64/raspberrypi/bspraspberrypi4.yml6
-rw-r--r--spec/build/bsps/aarch64/raspberrypi/objclock.yml31
-rw-r--r--spec/build/bsps/aarch64/raspberrypi/objsystemtimer.yml23
-rw-r--r--spec/build/bsps/aarch64/raspberrypi/optsystemtimer.yml25
-rw-r--r--testsuites/validation/tr-mtx-seize-wait.c2
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 );