forked from Imagelibrary/rtems
bsp/leon3: Add LEON3_PROBE_ASR_22_23_UP_COUNTER
This commit is contained in:
@@ -187,6 +187,8 @@ static void bsp_clock_handler_install(rtems_interrupt_handler isr)
|
||||
#define Clock_driver_support_set_interrupt_affinity(online_processors) \
|
||||
bsp_interrupt_set_affinity(clkirq, online_processors)
|
||||
|
||||
#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) || \
|
||||
defined(LEON3_PROBE_ASR_22_23_UP_COUNTER)
|
||||
static void leon3_clock_use_up_counter(struct timecounter *tc)
|
||||
{
|
||||
tc->tc_get_timecount = _SPARC_Get_timecount_asr23;
|
||||
@@ -202,6 +204,7 @@ static void leon3_clock_use_up_counter(struct timecounter *tc)
|
||||
|
||||
rtems_timecounter_install(tc);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LEON3_IRQAMP_PROBE_TIMESTAMP)
|
||||
static void leon3_clock_use_irqamp_timestamp(
|
||||
@@ -293,11 +296,13 @@ static void leon3_clock_initialize(void)
|
||||
#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER)
|
||||
leon3_clock_use_up_counter(tc);
|
||||
#else /* LEON3_HAS_ASR_22_23_UP_COUNTER */
|
||||
#if defined(LEON3_PROBE_ASR_22_23_UP_COUNTER)
|
||||
if (leon3_up_counter_is_available()) {
|
||||
/* Use the LEON4 up-counter if available */
|
||||
leon3_clock_use_up_counter(tc);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LEON3_IRQAMP_PROBE_TIMESTAMP)
|
||||
irqmp_ts = irqamp_get_timestamp_registers(LEON3_IrqCtrl_Regs);
|
||||
|
||||
@@ -39,6 +39,8 @@ uint32_t _CPU_Counter_frequency(void)
|
||||
return leon3_counter_frequency;
|
||||
}
|
||||
|
||||
#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER) || \
|
||||
defined(LEON3_PROBE_ASR_22_23_UP_COUNTER)
|
||||
static void leon3_counter_use_up_counter(SPARC_Counter *counter)
|
||||
{
|
||||
counter->read_isr_disabled = _SPARC_Counter_read_asr23;
|
||||
@@ -46,6 +48,7 @@ static void leon3_counter_use_up_counter(SPARC_Counter *counter)
|
||||
|
||||
leon3_counter_frequency = leon3_up_counter_frequency();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LEON3_IRQAMP_PROBE_TIMESTAMP)
|
||||
static void leon3_counter_use_irqamp_timestamp(
|
||||
@@ -108,11 +111,13 @@ static void leon3_counter_initialize(void)
|
||||
#if defined(LEON3_HAS_ASR_22_23_UP_COUNTER)
|
||||
leon3_counter_use_up_counter(counter);
|
||||
#else /* LEON3_HAS_ASR_22_23_UP_COUNTER */
|
||||
#if defined(LEON3_PROBE_ASR_22_23_UP_COUNTER)
|
||||
if (leon3_up_counter_is_available()) {
|
||||
/* Use the LEON4 up-counter if available */
|
||||
leon3_counter_use_up_counter(counter);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LEON3_IRQAMP_PROBE_TIMESTAMP)
|
||||
irqmp_ts = irqamp_get_timestamp_registers(LEON3_IrqCtrl_Regs);
|
||||
|
||||
@@ -36,6 +36,8 @@ links:
|
||||
uid: optapbuartbase
|
||||
- role: build-dependency
|
||||
uid: optasrupcnt
|
||||
- role: build-dependency
|
||||
uid: optasrupcntprobe
|
||||
- role: build-dependency
|
||||
uid: optgptimerbase
|
||||
- role: build-dependency
|
||||
|
||||
21
spec/build/bsps/sparc/leon3/optasrupcntprobe.yml
Normal file
21
spec/build/bsps/sparc/leon3/optasrupcntprobe.yml
Normal file
@@ -0,0 +1,21 @@
|
||||
SPDX-License-Identifier: CC-BY-SA-4.0 OR BSD-2-Clause
|
||||
copyrights:
|
||||
- Copyright (C) 2021 embedded brains GmbH & Co. KG
|
||||
actions:
|
||||
- get-boolean: null
|
||||
- define-condition: null
|
||||
build-type: option
|
||||
default:
|
||||
- enabled-by:
|
||||
- sparc/gr712rc
|
||||
- sparc/gr740
|
||||
value: false
|
||||
- enabled-by: true
|
||||
value: true
|
||||
enabled-by: true
|
||||
links: []
|
||||
name: LEON3_PROBE_ASR_22_23_UP_COUNTER
|
||||
description: |
|
||||
If this option is set to true, then it will be probed if the %asr22 and
|
||||
%asr23 up-counter is available.
|
||||
type: build
|
||||
Reference in New Issue
Block a user