Commit Graph
1667 Commits
Author SHA1 Message Date
Ning Yang 4b45d42aee bsps/xilinx-versal: fix BSP_INTERRUPT_VECTOR_COUNT too large
Avoid use of reserved INTIDs. BSP_INTERRUPT_VECTOR_COUNT does not allow use reserved interrupt IDs.

Details !29
2024-05-29 02:52:31 +00:00
Matheus Pecoraro b3a4f539c9 bsps/amd64: Add comments to start.s 2024-05-24 15:26:35 -03:00
Sebastian Huber 80c94eeff4 bsps: Assign file to Doxygen group
Add standard file header.
2024-05-23 19:03:09 +00:00
Matheus Pecoraro b874f4c99d x86_64: Fix stack aligment for x86-64 SysV ABI
Makes the code in bsp/x86_64/amd64/start/start.S and the stack frame
setup by _CPU_Context_Initialize align the stack properly according to
what is expected by the x86-64 SysV ABI
2024-05-22 01:31:06 +00:00
Kinsey Moore f094427708 bsps/shared/gicv3: Validate BSP vector count
Ensure that BSP_INTERRUPT_VECTOR_COUNT does not allow for reserved
interrupt IDs.
2024-05-21 23:26:37 +00:00
Kinsey Moore ba1f92fcba bsps/aarch64/a72: Avoid use of reserved INTIDs
Interrupt IDs 1020, 1021, 1022, and 1023 are reserved as special INTIDs
and should be ignored for normal RTEMS operation as they signal internal
changes in the interrupt controller that RTEMS itself is directly
causing.
2024-05-21 23:26:37 +00:00
Sebastian Huber ab8817ca03 rtems: Add get/set interrupt priorities
Add directives to get and set the priority of an interrupt vector.

Implement the directives for the following BSP families:

* arm/lpc24xx
* arm/lpc32xx
* powerpc/mpc55xxevb
* powerpc/qoriq

Implement the directives for the following interrupt controllers:

* GICv2 and GICv3 (arm and aarch64)
* NVIC (arm)
* PLIC (riscv)

Update #5002.
2024-05-10 13:26:22 +00:00
Sebastian Huber f6c8726cb7 bsps/arm: Move BSP-specific header file 2024-05-10 13:20:45 +00:00
Sebastian Huber 40ddcf9580 bsps: Use interrupt entry in clock driver
This avoids a dependency on memory allocations.
2024-05-07 23:21:31 +00:00
Vincenzo Calabretta 1f4e0c1036 bsps/powerpc: Introduction of interrupt locks
Interrupt locks are introduced in shared vme device drivers to enable
compilation in an SMP configuration of the qoriq BSP.
2024-05-07 18:26:28 +02:00
Sebastian Huber f5b52a3af0 bsps/arm: Fix Doxygen group assignment 2024-05-07 11:16:49 +02:00
Sebastian Huber 81f868ede4 bsps/arm: Add CMSIS files to Doxygen group 2024-05-07 11:16:49 +02:00
Sebastian Huber 7024401d76 bsps/arm: Add Doxygen group for Armv7-M SysTick
Change license to BSD-2-Clause according to file history and contributor
agreements.
2024-05-07 11:16:49 +02:00
Sebastian Huber d19c322259 bsps/aarch64: Define Doxygen groups
Fix typos.
2024-05-07 11:16:49 +02:00
Sebastian Huber a8fba20baa bsps: Add Doxygen group for Arm Generic Timer 2024-05-07 11:16:49 +02:00
Ning Yang 00f0d307b4 bsps/aarch64/raspberrypi: Add system timer support
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.

if BSP_CLOCK_USE_SYSTEMTIMER = 1, use the System Timer, otherwise use the ARM
Timer.
2024-04-30 01:39:06 -04:00
Vincenzo Calabretta b191af1619 bsp/qoriq: Include missing processormaskimpl.h 2024-04-30 01:39:06 -04:00
Sebastian Huber 76462bb64c bsps/arm: Improve GICv3 support
In addtion to 1023, the GICC_IAR register may return 1022 as a special value.
Simply check for a valid interrupt vector for the dispatching.

Check the GICC_IAR again after the dispatch to quickly process a next interrupt
without having to go through the interrupt prologue and epiloge.
2024-04-30 01:39:06 -04:00
Sebastian Huber 901e893087 arm/xen: Fix BSP_INTERRUPT_VECTOR_COUNT
Do not use reserved interrupt IDs.
2024-04-30 01:39:06 -04:00
Sebastian Huber bc7e6ae550 dev/irq: Improve Doxgyen group assignments
Make the GIC interrupt controller support a subgroup of the generic interrupt
controller support.
2024-04-30 01:39:06 -04:00
Sebastian Huber 39584528e9 bsps/arm: Improve GICv2 support
In addtion to 1023, the GICC_IAR register may return 1022 as a special value.
Simply check for a valid interrupt vector for the dispatching.

Check the GICC_IAR again after the dispatch to quickly process a next interrupt
without having to go through the interrupt prologue and epiloge.
2024-04-30 01:39:05 -04:00
Ning Yang b7a0e2a89b dev/clock: Move bcm2835-system-timer driver to shared space
This patch moves the bcm2835 system timer driver in the arm/raspberrypi directory to the shared directory and adjusts arm/raspberrypi BSP.
2024-04-30 01:39:05 -04:00
Sebastian Huber 087fc4351a bsps/xil-ttc: Improve clock driver
Make the clock driver parameters configurable.  Use the maximum counter
frequency to get the best time resolution.  Decouple the CPU counter from the
timecounter.  Make the tick catch up handling more robust.  Add a validation
test for the tick catch up.
2024-04-30 01:39:05 -04:00
Sebastian Huber 5a8e99546f bsps/xil-ttc: Add XIL_FATAL_TTC_IRQ_INSTALL 2024-04-30 01:39:05 -04:00
Sebastian Huber 42f86dfd75 bsps/xil-ttc: Use interrupt entry 2024-04-30 01:39:05 -04:00
Sebastian Huber 83f0c0259b bsps: Include <rtems/score/processormaskimpl.h>
This fixes commit b678a199e499b6c3f0b453393434aefaee180423 for SMP
configurations.
2024-04-30 01:39:05 -04:00
Bernd Moessner b4c65f78a0 Fix: type-cast to wrong type 2024-04-30 01:39:05 -04:00
Chris Johns 7db1948917 bsp/arm/zynq: Move README to README.md 2024-04-26 08:01:52 +10:00
Sebastian Huber 53d092471f dev/serial: Add Zynq UART kernel I/O support
Replace the BSP_CONSOLE_MINOR BSP option for the Xilinx Zynq BSPs with the new
BSP option ZYNQ_UART_KERNEL_IO_BASE_ADDR.  Move the kernel I/O support to a
shared file.
2024-04-04 12:53:53 +02:00
Sebastian Huber 8ad3f92b9a dev/serial: Add ZYNQ_UART_[01]_BASE_ADDR
This helps to provide a shared implementation of the kernel I/O support.
2024-04-04 12:53:51 +02:00
Sebastian Huber 4c2da2c343 dev/serial: Simplify some Zynq UART functions
Make the initialization and polled functions independent of the Termios
context.  This helps to implement the kernel I/O support without a dependency
on the Termios framework.
2024-03-27 20:22:53 +01:00
Sebastian Huber 5b0e355ed7 bsps: Move declarations to <bsp/irq-generic.h>
Move declarations of bsp_interrupt_get_affinity() and
bsp_interrupt_set_affinity() to <bsp/irq-generic.h>.  Canonicalize the
<bsp/irq.h> includes.

Implement bsp_interrupt_get_affinity() and bsp_interrupt_set_affinity() only if
needed (usually RTEMS_SMP).

Provide stub implementations for i386 to fix build errors.
2024-03-27 20:20:38 +01:00
Sebastian Huber 1df822a922 Mark parameters as intentionally unused
The parameters are unused due to API constraints.  The functions are
used through function pointers.  Alternative implementations may use the
parameters.

Update #4862.
2024-03-22 08:12:22 +01:00
Sebastian Huber 1eed6f8bfc bsps: Avoid unused argument in clock interrupt
Pass the parameter of the clock interrupt handler to
Clock_driver_support_at_tick() and Clock_driver_timecounter_tick().  This makes
it possible to use the interrupt handler argument in clock drivers.

Use the interrupt handler provided by Clock_driver_support_install_isr() to
avoid local delarations of Clock_isr().

Update #4862.
2024-03-20 16:34:09 +01:00
Sebastian Huber 2f5a747dcc dev/irq: Optional arm_gic_irq_processor_count()
Provide arm_gic_irq_processor_count() only in SMP configurations.
2024-03-20 07:40:41 +01:00
Stanislav Pankevich ef9a74fc1a arm/xilinx-zynqmp-rpu: Fix clock driver
We observed a strange behavior of the 1Hz timer when running cFS on Zynq
RPU. After some investigation, we reduced the error to the truncation
issue. This patch fixes the issue.
2024-03-19 13:25:16 +01:00
Kinsey Moore fd790b3431 bsps/shared/xqspipsu: Read correct status bits
When resetting the QSPI FIFOs, the driver was reading write-only bits of
a register for status information when it was actually in a different
register. This corrects the driver so that it reads the correct status
bits.
2024-03-11 12:09:59 -05:00
Kinsey Moore 33379dcfc4 bsps/shared/xnandpsu: Add opportunistic page cache
Add an opportunistic page cache to the xnandpsu driver since it does not
implement partial page reads and common filesystem access patterns
perform multiple reads from the same page. This has been seen to provide
a 10x speedup to read speeds and a 2x speedup on first initialization
when used with JFFS2.
2024-03-11 12:09:59 -05:00
Sebastian Huber 85b55a7624 bsps/clock: Fix fast idle for SMP 2024-03-11 14:40:06 +01:00
Sebastian Huber 283f783d5d aarch64/zynqmp: Fix UART base addresses and IRQ
The base addresses and IRQ numbers for UART 0 and 1 were interchanged.
Fix this and set BSP_CONSOLE_MINOR to 0 for this BSP family.
2024-03-11 14:22:53 +01:00
Sebastian Huber 5cb666ba41 bsps/powerpc: Fix include order
The <rtems/irq.h> header file depends on the BSP-provided define
BSP_SHARED_HANDLER_SUPPORT.
2024-03-11 07:09:15 +01:00
Kinsey Moore 75d7af409f bsps/xnandpsu: Allow creation of BBT
This fixes a logic inversion that was preventing creation of a Bad Block
Table (BBT) from scratch on devices that lack one. This was discovered
during upstream integration testing. The BBT management layer in this
driver is not designed to be easily testable other than on real hardware.
2024-02-28 11:20:36 -06:00
Sebastian Huber a779b17764 bsps/powerpc: Include missing <rtems/irq.h>
The <rtems/irq.h> defines a legacy API.
2024-02-27 14:54:32 +01:00
Sebastian Huber d6242196b5 bsp/qoriq: Use more specific include 2024-02-27 14:13:14 +01:00
Sebastian Huber b544d070cf bsp/qoriq: Remove superfluous include 2024-02-27 14:13:14 +01:00
Sebastian Huber 65bfcc3944 bsp/qoriq: Remove <rtems/irq.h> in <bsp/irq.h>
The <rtems/irq.h> defines a legacy API.
2024-02-27 14:13:14 +01:00
Sebastian Huber 4fd930b7f0 bsp/qoriq: Use bsp_fatal() 2024-02-27 14:13:13 +01:00
Sebastian Huber 7e990236a7 bsp/qoriq: Use interrupt entry
Avoid heap usage in the basic BSP.
2024-02-27 14:13:13 +01:00
Joel Sherrill 00e71f0b4b arm/altera-cyclone-v/README: Fix use of CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS
The proper name is now CONFIGURE_MAXIMUM_FILE_DESCRIPTORS.
2024-02-23 08:35:59 -06:00
Kinsey Moore 8f8f043234 bsps/qspipsu: Calculate correct parallel mode size
Stacked mode doubles the number of sectors and device size while
parallel mode doubles the sector size and the device size. Make sure
that this is accounted for in the device size accessor.
2024-02-19 09:26:04 -06:00