124 Commits

Author SHA1 Message Date
Sebastian Huber
eb7bc09b3b Add Tsi148 driver template 2024-01-31 09:55:59 +01:00
Sebastian Huber
17a3184081 mpc85xx: Port to RTEMS 2024-01-31 09:55:59 +01:00
Aaron Nyholm
5de608c582 rtemsbsd/versal_slcr: Fix Versal GEM clock set 2023-06-20 10:16:10 +10:00
Rick VanderWal
ac4cf946a2 rtemsbsd/sdhci: Fix Arasan driver when no card present
This fixes an issue where the card present signal doesn't stabilize
quickly and indicates present when no card is inserted in a removable
slot.
2023-04-04 09:48:25 -05:00
Kinsey Moore
f462c4de5f rtemsbsd/arasan_sdhci: Improve board/eMMC compat
This improves the compatibility of this driver across board and memory
variants by avoiding use of the HISPD mode.
2022-10-21 15:10:43 -05:00
Kinsey Moore
cf8fa08015 rtemsbsd/arasan_sdhci: Remove redundant clock cap
The BSD SD subsystem enforces a 50MHz clock cap for devices which don't
report their own maximum clock speed. This setting is unnecessary for
the Zynq 7000 version of this IP and restricts the Zynq Ultrascale+
MPSoC version of this IP without need since it reports its maximum speed
as 200MHz.
2022-10-21 15:10:43 -05:00
Kinsey Moore
452637ae99 rtemsbsd/arasan_sdhci: Update description
This driver works on both the Zynq 7000 chips as well as the Zynq
Ultrascale+ MPSoC chips and targets the Arasan SDHCI IP that exists in
both.
2022-10-21 15:10:43 -05:00
Kinsey Moore
ba1b041bd1 rtemsbsd/arasan_sdhci: Stop masking capabilities
The initial version of this driver was masking the capabilities register
to hide 8 bit bus capability. This is not necessary since these devices
report that capability correctly and the masking affects performance
negatively on ZynqMP boards where the 8 bit bus is supported. This also
removes two quirks that were made necessary by the capabilities masking.
2022-10-21 15:10:43 -05:00
Kinsey Moore
63dae7159f rtemsbsd/arasan_sd: Prevent disabled device probe
Probing a SDIO/SDHCI interface that has been disabled by system init via
holding it in reset can cause a CPU hang. This prevents probing of
devices that have been disabled in such a manner on ZynqMP systems.
2022-09-16 09:41:49 -05:00
Sebastian Huber
a0d36f58fd arm/lpc: Add option to customize device probes 2022-09-06 13:22:45 +02:00
Sebastian Huber
c5c5a199c6 if_lpe.c: Use interface transmit
This avoids the need for a transmit task and transmit interrupts.
2022-06-24 07:33:29 +02:00
Sebastian Huber
1056349b4e if_lpe.c: Move transmit initialization
Move the transmit initialization out of the transmit task to be able to
remove the transmit task in the next patch.
2022-06-24 07:32:50 +02:00
Sebastian Huber
ff4c60af7a if_lpe.c: Port to LibBSD 2022-06-24 07:32:50 +02:00
Sebastian Huber
2722615130 if_lpe.c: Import legacy LPC Ethernet driver
The standard FreeBSD MII support causes severe problems on the LPC3200
chip family.  If an Ethernet module register is accessed while there is
no clock from the PHY, the chip completely locks up and only an external
watchdog can recover from this state.  The legacy driver had a custom
PHY management code which helped to avoid such issues.  The if_lpe.c
driver is no longer maintained by FreeBSD.
2022-06-24 07:32:50 +02:00
Sebastian Huber
61f646d9b9 if_atsam: Recover from receive freezes
Under unknown conditions the receive path ended up in a frozen state.
In this state, the DMA and driver descriptor head were equal and all
receive descriptors had the used bit set.  So, the DMA was unable to
store received frames.  However, the receive daemon was never woken up
to refill the receive buffers.  It seems that the RXUBR interrupt can be
used to recover from this state.

Update #4652.
2022-06-01 09:57:56 +02:00
Sebastian Huber
8588e9542e if_atsam: Shorten sysctl names
Update #4652.
2022-06-01 09:57:53 +02:00
Sebastian Huber
bd56cb2e59 if_atsam: Add tx/rx desc sysctls
Update #4652.
2022-06-01 09:57:50 +02:00
Sebastian Huber
683bae95b3 if_atsam: Add register sysctls
Update #4652.
2022-06-01 09:57:47 +02:00
Sebastian Huber
07e282034c if_atsam: Allow stats reset via sysctl
Update #4652.
2022-06-01 09:57:28 +02:00
Sebastian Huber
e992d45b63 if_atsam: Fix interface stop
Update #4652.
2022-05-11 15:54:23 +02:00
Sebastian Huber
4ad09617d0 if_atsam: Support transmit bpf
Update #4652.
2022-05-11 15:49:05 +02:00
Sebastian Huber
989675ee7c if_atsam: Do not use rtems_bsdnet_newproc()
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
821bcb7345 if_atsam: Support IFCAP_VLAN_HWTAGGING
This is required to enable checksum offload for vlan interfaces.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
967613fbce if_atsam: Optimize receive
Do not use the interface mutex in the receive loop.  Avoid multiple
reads of DMA descriptor words.  Use a compile-time constant for the
receive DMA descriptor count to simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
2cb974fa20 if_atsam: Optimize transmit
Use the transmit interface handler to avoid a transmit task/interrupt.
Use a compile-time constant for the transmit DMA descriptor count to
simplify calculations.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
c944cb9325 if_atsam: Add multicast support
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
1230011435 if_atsam: Fix start/stop of interface
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
975916a75d if_atsam: Fix interrupt setup
The interrupt is enabled by rtems_interrupt_handler_install().

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
adda3a5a6d if_atsam: Do not disable the Ethernet CRC
The Ethernet CRC and padding must be always generated by the MAC.

Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
7e082f6656 if_atsam: Enable all capabilities
Update #4652.
2022-05-11 15:49:04 +02:00
Sebastian Huber
2556c4c336 if_atsam: Fix warnings
Update #4652.
2022-05-11 15:49:04 +02:00
Heinz Junkes
de0badf2c3 if_mve: Add MV643XX Ethernet driver
Update #4345.
2022-03-07 10:52:52 +01:00
Christian Mauderer
17ac5a8cfe ppp: Fix transmitting data
The pppstart expected that a driver write would somehow magically
process all data passed to the write function. Because ppp disables all
buffering that originally has been in termios, that assumption is not
true for all but polled drivers.

With this patch, the pppstart now gets and processes the feedback that
is returned from the driver via rtems_termios_dequeue_characters.

Fixes #4493
2022-02-10 09:19:06 +01:00
Chris Johns
25a883272a Add support for Xilinx Versal APAC 2021-10-21 11:29:14 +11:00
Chris Johns
6514d56158 sys/kern: Add VFS support
- Refactor the libio interface

- Move syscalls into an rtemsbsd location

- Provide a root directory mount point

Update #4475
2021-08-28 10:25:46 +10:00
Christian Mauderer
b1ecc253ee st-sdmmc: Handle short not cache aligned buffers
Possible data sources for SD driver:

- mmc_sd_switch():
    - length: 64 byte;
    - buffer on stack
- mmc_test_bus_width():
    - length: 4 or 8 byte
    - buffer in program memory or on stack
- mmc_app_send_scr():
    - length: 8 byte
    - buffer from device ivar structure
- mmc_app_sd_status():
    - length: 64 byte
    - buffer from device ivar structure
- mmc_send_ext_csd():
    - length: MMC_EXTCSD_SIZE = 512
    - buffer from device ivar structure
- rtems_bsd_mmcsd_disk_read_write():
    - length: depends on read
    - buffer from rtems_blkdev buffer -> already aligned
- mmcsd_ioctl_cmd():
    - length: depends on call
    - buffer malloced, not aligned -> patched in RTEMS

So the problematic buffers are only the ones up to 512 bytes. Copy these data
into a buffer to avoid that problem.
2021-04-19 09:02:30 +02:00
Christian Mauderer
aef7a74b94 STM32H7: Fix SDMMC build for all other BSPs 2021-04-01 16:04:44 +02:00
Christian Mauderer
e0fcb31f01 STM32H7: Add SDMMC driver
Update #4372
2021-04-01 09:05:13 +02:00
Kinsey Moore
e256668d6e nexus: Add ZynqMP SLCR driver
Add a System Level Control Register driver for the Xilinx Zynq
Ultrascale+ MPSoC with basic clock control functionality for use with
the Cadence GEM. This also removes the Zynq-7000 clock control weakref
from compilation depending on the BSP in use.
2021-03-10 08:57:59 -06:00
Kinsey Moore
68e79b6d18 zynq: Add support for SDHCI devices 2020-12-22 16:12:58 -06:00
Sebastian Huber
9ebb4e2025 dwc_otg: Enable voltage detector
Update #3910.
2020-10-27 06:29:39 +01:00
Sebastian Huber
0e7108f940 dwc_otg: Add support for nexus bus
Update #3910.
2020-10-27 06:29:37 +01:00
Sebastian Huber
1189f7147a if_stmac: Add driver for STM32H7 ethernet module
Update #3910.
2020-10-27 06:28:47 +01:00
Sebastian Huber
06896e4842 NVD(4): Fix logical block count calculation
Update #4164.
2020-10-27 06:26:34 +01:00
Sebastian Huber
b057293e6b NVD(4): Fix NULL pointer access in nvd_sync()
Update #4164.
2020-10-27 06:26:22 +01:00
Sebastian Huber
6b38edaf21 tsc_lpc32xx.c: Update due to API changes 2020-09-29 14:09:53 +02:00
Christian Mauderer
1398d9329f imx: Use RTEMS GPIO driver instead of FreeBSD one
Update 3869
2020-07-29 13:09:11 +02:00
Sebastian Huber
e7291f7ac3 NVD(4): Add RTEMS-specific NVMe disk driver
Update #3821.
2019-11-13 13:22:23 +01:00
Sebastian Huber
eeb3fd5d9b if_atsam: Remove WDT_Disable()
The watchdog timer (WDT) can be configure only once.  Do not touch it in
the BSP since the application may want to use it.
2019-06-13 08:57:41 +02:00
Sebastian Huber
66c9481b07 dpaa: Use if_transmit instead of legacy if_start
This avoids a lock contention on the send queue.
2019-01-21 09:35:06 +01:00