summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2021-07-16 11:18:14 +0200
committerSebastian Huber <sebastian.huber@embedded-brains.de>2022-01-18 14:35:47 +0100
commit4d65fe119e2523dd0f7f87f1e8a674d03c6b51c8 (patch)
tree3486da3c7d23fd798b5f3105d6ca48d37b2be36b
parentbea2955d2e52d724272d33cc016697046a96effd (diff)
bsp/leon3: Add LEON3_GPTIMER_BASE
-rw-r--r--bsps/sparc/leon3/include/bsp/leon3.h4
-rw-r--r--bsps/sparc/leon3/start/amba.c4
-rw-r--r--spec/build/bsps/sparc/leon3/grp.yml2
-rw-r--r--spec/build/bsps/sparc/leon3/optgptimerbase.yml24
4 files changed, 34 insertions, 0 deletions
diff --git a/bsps/sparc/leon3/include/bsp/leon3.h b/bsps/sparc/leon3/include/bsp/leon3.h
index 852d6970ce..6c139bdaed 100644
--- a/bsps/sparc/leon3/include/bsp/leon3.h
+++ b/bsps/sparc/leon3/include/bsp/leon3.h
@@ -269,7 +269,11 @@ static inline uint32_t bsp_irq_fixup( uint32_t irq )
/**
* @brief This pointer provides the GPTIMER register block address.
*/
+#if defined(LEON3_GPTIMER_BASE)
+#define LEON3_Timer_Regs ((gptimer *) LEON3_GPTIMER_BASE)
+#else
extern gptimer *LEON3_Timer_Regs;
+#endif
/**
* @brief This pointer provides the GPTIMER device information block.
diff --git a/bsps/sparc/leon3/start/amba.c b/bsps/sparc/leon3/start/amba.c
index 5afc80d599..d3254e3f0a 100644
--- a/bsps/sparc/leon3/start/amba.c
+++ b/bsps/sparc/leon3/start/amba.c
@@ -100,8 +100,10 @@ RTEMS_SYSINIT_ITEM(
irqamp *LEON3_IrqCtrl_Regs;
struct ambapp_dev *LEON3_IrqCtrl_Adev;
+#if !defined(LEON3_GPTIMER_BASE)
gptimer *LEON3_Timer_Regs;
struct ambapp_dev *LEON3_Timer_Adev;
+#endif
/*
* amba_initialize
@@ -147,6 +149,7 @@ static void amba_initialize(void)
LEON3_IrqCtrl_Regs += icsel;
}
+#if !defined(LEON3_GPTIMER_BASE)
/* find GP Timer */
adev = (void *)ambapp_for_each(plb, (OPTIONS_ALL|OPTIONS_APB_SLVS),
VENDOR_GAISLER, GAISLER_GPTIMER,
@@ -170,6 +173,7 @@ static void amba_initialize(void)
if (leon3_timer_prescaler)
grlib_store_32(&LEON3_Timer_Regs->sreload, leon3_timer_prescaler);
}
+#endif
}
RTEMS_SYSINIT_ITEM(
diff --git a/spec/build/bsps/sparc/leon3/grp.yml b/spec/build/bsps/sparc/leon3/grp.yml
index 85bb22f71b..78d59ff568 100644
--- a/spec/build/bsps/sparc/leon3/grp.yml
+++ b/spec/build/bsps/sparc/leon3/grp.yml
@@ -34,6 +34,8 @@ links:
- role: build-dependency
uid: optapbuartbase
- role: build-dependency
+ uid: optgptimerbase
+- role: build-dependency
uid: optconirq
- role: build-dependency
uid: optleon3smp
diff --git a/spec/build/bsps/sparc/leon3/optgptimerbase.yml b/spec/build/bsps/sparc/leon3/optgptimerbase.yml
new file mode 100644
index 0000000000..6d414fb6bb
--- /dev/null
+++ b/spec/build/bsps/sparc/leon3/optgptimerbase.yml
@@ -0,0 +1,24 @@
+SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
+copyrights:
+- Copyright (C) 2021 embedded brains GmbH (http://www.embedded-brains.de)
+actions:
+- get-integer: null
+- format-and-define: null
+build-type: option
+default: null
+default-by-family: []
+default-by-variant:
+- value: 0x80000300
+ variants:
+ - sparc/gr712rc
+- value: 0xff908000
+ variants:
+ - sparc/gr740
+enabled-by: true
+format: '{:#010x}'
+links: []
+name: LEON3_GPTIMER_BASE
+description: |
+ This option defines the base address of the GPTIMER register block used by
+ the clock driver.
+type: build