Commit Graph

1567 Commits

Author SHA1 Message Date
Kinsey Moore
150dcf5e47 libio: Clean up usage of rtems_termios_device_mode
This cleans up outputUsesInterrupts usage with rtems_termios_device_mode
enum values. The outputUsesInterrupts member was typed as an int, named
as if it were a boolean value, and used as if it were a
rtems_termios_device_mode enum. In this patch, values assigned to
outputUsesInterrupts have been converted to the corresponding
rtems_termios_device_mode enum value, conversions from
deviceOutputUsesInterrupts have been made explicit, and uses of
rtems_termios_device_mode enum values with deviceOutputUsesInterrupts
have been converted to booleans.
2024-01-10 14:43:53 -06:00
Kinsey Moore
4092fbb2c0 bsps/aarch64/cache: Clean up unused fuctions
When the CPU_CACHE_SUPPORT_PROVIDES_RANGE_FUNCTIONS definition was added
to AArch64 cache management, it obsoleted the *_1_data/instruction_line
functions. These have been removed since they are no longer referenced.
The AArch64_instruction_cache_inner_shareable_invalidate_all function is
only used when RTEMS_SMP is defined, so only define it in that
circumstance.
2024-01-10 14:43:53 -06:00
Bernd Moessner
9d07bf67a9 xparameters.h: fix typo in comment 2024-01-08 17:42:58 -06:00
Sebastian Huber
2e71bd08ba tm27: Add optional TM27_INTERRUPT_VECTOR_DEFAULT
Let the BSP define TM27_INTERRUPT_VECTOR_DEFAULT to more efficiently and
reliably get the TM27 default interrupt vector.

Update #3716.
2023-12-19 08:22:37 +01:00
Kinsey Moore
3798c5735d bsps/xnandpsu: Allow manipulation of BBT
Expose functions to directly manipulate the bad block table (BBT). These
functions are necessary to correct possible BBT corruption caused by
bugs in the BBT management layer.
2023-12-14 13:40:03 -06:00
Kinsey Moore
437053282d bsps/xnandpsu: Constrain block erasure to device
The XNandPsu_EraseBlock function takes a target device and a block
offset for erasure. Ensure the block offset is within the size of the
target device.
2023-12-14 13:40:03 -06:00
Kinsey Moore
d77a873ddb bsps/xnandpsu: Mark correct reserved blocks
When marking the trailing blocks on a device as reserved for Bad Block
Table usage, ensure that the correct blocks are marked. This resolves an
off-by-one error that was marking one block too low and leaving the last
block in the device unmarked.
2023-12-14 13:40:03 -06:00
Kinsey Moore
f823dba027 bsps/xnandpsu: Write BBT to correct location
When writing out the Bad Block Table, write it to the targeted device
and ensure the block is appropriately mapped to the targeted device.
2023-12-14 13:40:03 -06:00
Kinsey Moore
757fbd6bc7 bsps/xnandpsu: Detect missing BBTs
Mark the BBT descriptor as invalid before scanning to ensure that
missing BBTs are detected and written correctly if necessary.
2023-12-14 13:40:03 -06:00
Kinsey Moore
d6b75cc248 bsps/xnandpsu: Read correct BBT size
The Bad Block Table is a per-device catalog of the dispositions of each
block in the device. Only read enough data to determine the dispositions
of blocks for the device being read.
2023-12-14 13:40:03 -06:00
Kinsey Moore
7946cff0bc bsps/xnandpsu: Fix BBT mapping functions
The xnandpsu driver includes functionality to map back and forth between
the flash-based BBT and the memory-based BBT with the values in each
being a bitwise inversion of each other. This resolves several bugs in
this process and simplifies the inversion from operating on the block
representation to operating on the entire BBT entry (4 blocks, 2 bits
per block, one byte total).

Bugs resolved in XNandPsu_ConvertBbt():
* The calculation of memory BBT entry offset was off by a factor of 4
* The entry offset into the flash BBT has been removed since each flash
  BBT directly describes the flash space it is contained within and has
  no reference to other devices in the chip

Bugs resolved in XNandPsu_WriteBbt():
* The BBT length calculated was reduced to NumTargetBlocks from
  NumBlocks since only the relevant portion of the in-memory BBT should
  be written to the flash-based BBT space
* An offset was applied to values retrieved from the in-memory BBT so
  that only the relevant portion was converted and written to the
  flash-based BBT
2023-12-14 13:40:03 -06:00
Kinsey Moore
a6aa6c6385 bsps/zynqmp/jffs2: Use BBT information directly
The XNandPsu_IsBlockBad() function is insufficient for JFFS2 to
determine whether a block is usable since the function does not report
reserved blocks. JFFS2 is also unable to use the last 4 blocks of each
target attached to the NAND controller since they are reserved for the
Bad Block Table (BBT), but not necessarily marked as such.
2023-12-14 13:40:03 -06:00
Jacob Killelea
0883f7ec58 bsps/arm/stm32f4: Enable USART RX interrupts
Hi all, this is my first email patch submission and my first contribution to RTEMS, so please give any
feedback you have!

This patch enables interrupt driven data reception on USART ports on
STM32F4 series chips. This feature is gated behind the config flag
BSP_CONSOLE_USE_INTERRUPTS. If this flag is not set to True, the older
polling implementation will be used. I tested this feature on STM32F401CE
(blackpill) and STM32 Nucleo F411RE boards, with both capable of keeping
up with a 115200 baud continous data stream. With the older polling
implementation, both would drop bytes at 9600 baud. In addition, I
updated the implementation of usart_set_attributes to support changing
the baud rate of the USART port based on the input speed.
2023-12-14 13:40:03 -06:00
Sebastian Huber
2286a2ec19 bsp/tms570: Do not use POM for internal flash 2023-12-06 17:04:46 +01:00
Sebastian Huber
05a4c70aa9 bsp/tms570: Improve POM handling
Place the vector table in the start section so that the overlay can be
avoided if we execute from internal flash.  The problem is that when the
POM is enabled, the ECC cannot be enabled for the internal flash.
2023-12-06 14:27:48 +01:00
Sebastian Huber
c374727c63 bsp/tms570: Adjust BSP_OSCILATOR_CLOCK 2023-12-06 13:35:40 +01:00
Sebastian Huber
c65466929f bsp/tms570: Fix debug console baud setting 2023-12-06 13:35:40 +01:00
Sebastian Huber
232180a502 bsp/tms570: Use internal RAM for fast data 2023-12-06 13:35:40 +01:00
Sebastian Huber
47c4093ad3 bsp/tms570: Add TMS570LC4357 support 2023-12-06 13:35:40 +01:00
Sebastian Huber
e13b7340fe bsp/tms570: Use 0x for hex constants 2023-12-06 13:35:40 +01:00
Sebastian Huber
3a0dcd5ee9 bsp/tms570: Replace TMS570_MMR_SELECT_GMII_SEL
Replace TMS570_MMR_SELECT_GMII_SEL with TMS570_MMR_SELECT_MII_MODE and
TMS570_MMR_SELECT_RMII_MODE.
2023-12-06 13:35:40 +01:00
Sebastian Huber
da35b37f92 bsp/tms570: Add pin configuration variants
Rearrange pin function bit fields to allow the clearing of all function
bits through TMS570_PIN_AND_FNC().

Move implementation details to source file.
2023-12-06 13:35:40 +01:00
Sebastian Huber
ba89aae89d bsps/arm: BSP_START_VECTOR_ADDRESS_TABLE_ALIGNMENT
Add the BSP option BSP_START_VECTOR_ADDRESS_TABLE_ALIGNMENT to
optionally define an alignment of the vector address table begin.
2023-12-06 13:35:37 +01:00
Bernd Moessner
fe35c8d5ee ZYNQ7000: Add support PYNQ, PicoZed, MicroZed, ZYBO and ZYBO Z7
This patch adds basic support for the following boards:

xilinx_zynq_pynq - PYNQ Z1 / Z2
xilinx_zynq_microzed - MicroZed 7010 / 7020
xilinx_zynq_picozed - PicoZed 7010 / 7015 / 7020 / 7030
xilinx_zynq_zybo - ZYBO
xilinx_zynq_zybo_z7 - ZYBO Z7-10 / Z7-20

N.b. Arty Z7-20 is basically a PYNQ Z1 - different board
color and updated Eth PHY.
2023-11-28 12:51:34 -06:00
Christian Mauderer
ac0b4ae5c4 bsps/imxrt1166: Disable video_mux
The pinctrl-0 of the video_mux might overwrite pin settings done by
other peripherals. Disabling it by default prevents unexpected pin
settings.
2023-11-28 13:36:41 +01:00
Christian Mauderer
02f2316be7 bsp/imxrt1166: Support GPIO CS pins in LPSPI
With this, it is possible to use GPIOs as CS pins in the LPSPI. To avoid
additional complexity, the GPIOs will have the same limitations as the
native (hardware) CS pins.

The GPIO CS feature adds a number of extra code when starting SPI
transfers on this controller. Therefore it is possible to disable the
additional code by just setting the IMXRT_LPSPI_MAX_CS option to 0. In
that case only native CS pins are supported.

At the moment, this feature is only enabled on i.MXRT1166 by default
because it is not tested on i.MXRT1050. But it should work there too.
2023-11-28 13:36:41 +01:00
Christian Mauderer
a38f9c57f9 bsps/imx*: imx_gpio from pointer to fdt property
Device trees allow mixing different kinds of GPIOs in one property. For
that it is usefull to only provide a pointer to an arbitrary location in
the property and initialize a GPIO from that.
2023-11-28 13:36:41 +01:00
Philip Kirkpatrick
793c0f4671 bsps/arm: Add BSP for ZynqMP RPU 2023-11-20 10:43:55 -06:00
Kinsey Moore
001a0a4db6 bsps/clock: Import Xilinx TTC hardware definitions
This imports the TTC hardware definitions for the triple timer counters
on various Xilinx platforms. This was imported as specified in the
VERSION file in this commit.
2023-11-20 10:43:55 -06:00
Kinsey Moore
bb6ed3bed7 bsps/xnandpsu: Always wrap page to device size
The xnandpsu driver conditionally tries to wrap page index to NAND chip
size causing an off-by-one error where the first page of the second chip
is not wrapped correctly. This removes the conditional so that page
index is always wrapped.
2023-10-27 11:33:44 -05:00
Kinsey Moore
3363fabb9d bsps/xnandpsu: Avoid loop counter reset
On configurations where multiple NAND chips are in use, the erasure
loop in XNandPsu_Erase() can reset the loop counter variable once it
gets to blocks in the second chip causing an infinite loop overwriting
parts of the first chip. This change ensures that the loop counter is
not accidentally reset.
2023-10-27 11:33:44 -05:00
Kinsey Moore
3339afb82e bsps/aarch64/zynqmp/nand: Erase using offset
Prefer use of XNandPsu_Erase instead of XNandPsu_EraseBlock since the
XNandPsu driver does not expose the primitives necessary to ensure
device readiness after the operation is complete.
2023-10-27 11:33:44 -05:00
Kinsey Moore
8a2c3af9cf bsps/xil: Adjust Xilinx support code for Cortex-R5
This fixes some issues in the Xilinx support code that are critical to
support the Cortex-R5F cores present in my Xilinx SoCs. The imported
Cortex-R5 xil_cache.c matches the existing information in
bsps/shared/xil/VERSION.
2023-10-24 09:52:27 -05:00
Kinsey Moore
7ea60d29d8 bsps/xil: Import Xilinx Cortex-R5 support
This imports Xilinx support code for the MPU and cache on Cortex-R5
cores. This was imported as specified in bsps/shared/xil/VERSION.
2023-10-24 09:52:27 -05:00
Sebastian Huber
958d517215 bsps/leon3: Use DSU time tag for GR712RC
Close #4954.
2023-10-20 11:20:14 +02:00
Sebastian Huber
601b84c758 bsps/leon3: leon3_counter_use_irqamp_timestamp()
Simplify leon3_counter_use_irqamp_timestamp().

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
ffa29bac30 bsps/leon3: Statically initialize get timecount
Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
8266a8a335 bsps/leon3: Move code blocks
Move code blocks to simplify C preprocessor usage.

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
abb2f8bd66 bsps/leon3: Use custom CPU counter implementation
Merge the timecounter and CPU counter support for the leon3 BSP family.
Remove now unused functions from the CPU counter support of the erc32
and leon3 BSPs.

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
ff533cec9d bsps/leon3: Simplify clock and CPU counter
Share the timecounter instance between the clock and the CPU counter.
This greatly simplifies the clock driver since we have to do the device
selection only in one place, the CPU counter support.

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
3f03a6d2ef bsps/leon3: Make GPTIMER fall back mandatory
Using the auto reload counter which generates the clock ticks for the
timecounter or CPU counter is quite difficult and only works in
uniprocessor configurations.

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
b6dc4b4707 sparc: Move CPU counter implementation
Enable a BSP-specific CPU counter implementation.

Update #4954.
2023-10-20 11:16:54 +02:00
Sebastian Huber
8fe0fc4721 bsps/leon3: Optional IRQ(A)MP timestamp support
This is necessary to run the tests on SIS with profiling enabled.

Update #4954.
2023-10-20 11:16:53 +02:00
Sebastian Huber
95cf6e57be bsps/leon3: Update due to register API changes 2023-10-20 11:16:53 +02:00
Tian Ye
a738d69bcf bsps/aarch64: Disable use of TTBR1
Force use of addresses that would be translated by TTBR1 to cause a
translation fault. RTEMS on AArch64 does not use TTBR1 and so attempted
translation of that address range could cause unexpected behavior in the
form of other exception types since TTBR1 is never set.
2023-10-18 10:14:42 -05:00
Kinsey Moore
5b22003411 bsps: Remove unused includes 2023-10-13 19:02:15 -05:00
Sebastian Huber
406ad8a5ae powerpc/t32mppc: Improve terminal settings 2023-10-13 09:51:29 +02:00
Sebastian Huber
ed2817c4c6 powerpc/t32mppc: Remove obsolete config options 2023-10-13 09:51:29 +02:00
Sebastian Huber
8290784378 powerpc/t32mppc: Fix console driver
Make sure that the message buffers are not garbage collected by the
linker.
2023-10-13 09:51:29 +02:00
Kinsey Moore
c5476e2b8c bsps/xilinx-zynqmp: Unify JFFS2 OOB write locking
Ensure that a single locking session is carried over OOB writes
including the OOB read that is sometimes required. This removes the
possibility of another write occurring between the read and write that
would make the write incorrect.
2023-10-12 18:56:43 -05:00