| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When bus-off condition is detected by the ISR, it sets the started flag to
STATE_BUSOFF. This is monitored by the user functions grcan_read() and
grcan_write() each time they want to enable DMA or update interrupt mask. If
they detect that ISR has detected bus-off then they will return either with an
error or with the number of CAN messages processed. Future calls to functions
which require STARTED mode will be rejected and grcan_isstarted() will return
0. The next call to grcan_stop() will do the transition from BUSOFF->STOPPED
and the device can then be started again with grcan_start().
Similar to a bus-off condition, the AHB error condition detected by the ISR
will trigger the same shut-down logic of the driver. The difference is that
the state entered is STATE_AHBERR and the routines will return a different
value to indicate AHB error state.
This commit also fixes an issue where ISR was not always unregistered on close.
User functions can cause these transitions:
STATE_STOPPED -> STATE_STARTED (grcan_start)
STATE_STARTED -> STATE_STOPPED (grcan_stop)
STATE_BUSOFF -> STATE_STOPPED (grcan_stop, grcan_close)
STATE_AHBERR -> STATE_STOPPED (grcan_stop, grcan_close)
ISR can cause these transition
STATE_STARTED -> STATE_BUSOFF (grcan_interrupt)
STATE_STARTED -> STATE_AHBERR (grcan_interrupt)
STATE_BUSOFF/AHBERR is entered from ISR on bus-off condition. At transition
the ISR disables DMA, masks all interrupts and flushes semaphores.
Other related updates:
* Statistics are updated from the ISR. Update is now spin-locked to ensure a
consistent user view.
* The debug output has been updated to include state changes.
* For read/write/flush, return error (-4) if driver aborted the operation
due to bus-off. Likewise if abourted due to AHB error -5 is returned.
* Collect bus-off statistics
Related to the new BUSOFF and AHBERR states the API has been updated to
reflect the current SW driver state. The isstarted() function has been
replaced with get_state().
|
| |
|
|
|
|
|
| |
There was a potential read-modify-write race on the interrupt mask (imr)
register between the ISR and user functions.
|
| |
|
|
|
|
|
| |
Locking the stats structure when copying to user buffer ensures a consistent
view to the user.
|
| |
|
|
|
|
| |
This commit does not contain any change of functionality.
|
|
|
|
|
|
|
|
| |
This commit preserves all driver services, using a function based user
interface instead of the I/O interface.
The messages count parameter is now number of CAN messages instead of
number of bytes.
|
|
|
|
|
|
| |
Prefix BSP specific symbols with BSP name:
dbg_uart -> leon3_debug_uart
debug_uart_index -> leon3_debug_uart_index
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The EDCL and Duplex-Detection are now disabled during soft-reset
of the GRETH core.
The speed settings are preserved on boot and greth_stop() also,
this is required to keep EDCL operational when DD is set.
|
| |
|
| |
|
|
|
|
|
| |
If separate interrupts are not available, then do not add the timer hardware
index number when configuring interrupt affinity.
|
|
|
|
|
|
| |
Probing of separate interrupts was done by storing the GPTIMER_CFG_SI bit. But
it was never actually stored since it is bit 8 and the datatype is 8-bit. Now
store the AND result as boolean value instead.
|
| |
|
| |
|
|
|
|
|
|
|
| |
This commit updates the OCCAN driver locking mechanism:
1. Convert interrupt disable/enable to interrupt locks.
2. Make sure interrupt service routines use proper locking to deal with threads
running in parallel.
|
| |
|
| |
|
|
|
|
|
| |
The driver is limited to the access protection bit-vector. It
currently does not support the IOMMU page-table functionality.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Do not disable transmitter until shift register is empty when closing device.
It is correct to look at the sending software state when closing the device.
However, the sending state must be cleared only when everything is sent.
|
|
|
|
|
| |
Limit the number of calls to termios rtems_termios_enqueue_raw_characters() by
reading out the RX FIFO on stack and then call termios only once.
|
|
|
|
|
|
|
| |
The APBUART control register can be updated from both ISR and task context so
the device must be locked when manipulating the register.
There is also a scenario with RX FIFO interrupts where a few characters can be
in the FIFO without generating interrupt.
|
|
|
|
|
|
| |
The cons layer decides which of the registered console device is granted as
system console. When a device specific console driver performs its first_open,
it inherits UART parameters from boot loader only if it is the system console.
|
|
|
|
|
| |
Always assign a device/file system name.
Use device unique name for ISR.
|
|
|
|
|
|
|
| |
Utilize the APBUART RX delayed interrupt if available. It also
enables RX FIFO interrupt when used.
The APBUART RX delayed interrupt is supported by the GR740.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
LEON driver manager console driver interface (cons) and the APBUART cons driver
(apbuart_cons) have been updated for recent TERMIOS interface changes. The
legacy callback API is not used anymore and deprecated functions are
eliminated.
This new implementation is based on RTEMS BSP and Device Driver Development
Guide, chapter named "Console Driver".
- Functions marked as deprecated (rtems_termios_open() and
rtems_termios_close()) have been updated with the present-day versions.
- The legacy "callback" interface is replaced with the "handler" interface.
- Implementation is inspired by the documentation example, the non-driver
manager driver for APBUART (apbuart_termios).
- Polled, interrupt and task mode is supported.
|
|
|
|
|
|
|
|
| |
The FIFOs available capability bit is available in the UART Control Register:
FIFOs available (FA) - Set to 1 when receiver and transmitter FIFOs are
available. When 0, only holding register is available.
Delay interrupt can delay a receive character interrupt to better handle RX bursts.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Compatible with SMP
- Selects timecounter depending on features available
- Fixes problem with time going to fast on SMP
This is an implementation of the RTEMS "clockdrv_shell" interface for
LEON2/3/4 systems using the Driver Manager. It is clock hardware agnostic
and compatible with SMP and UP. Availability of free running counters is
probed and selected as needed.
GR740:
RTEMS TESTSUITE FAILURE SUMMARY
Result Test ExecRes ConsoleRes ExitCode1 ExitCode2
FAIL: ./fstests/imfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/jffs2_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mdosfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mimfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mrfs_fsscandir01 OK FAIL 5 0
FAIL: ./psxtests/psxshm01 FAIL FAIL N/A N/A
FAIL: ./psxtests/psxshm02 FAIL FAIL N/A N/A
FAIL: ./sptests/spinternalerror01 OK N/A -559038737 1611526157
FAIL: ./sptests/sptimecounter01 OK N/A 5 0
SUMMARY
Tests failing: 9
Tests successful: 578
---
GR712RC:
RTEMS TESTSUITE FAILURE SUMMARY
Result Test ExecRes ConsoleRes ExitCode1 ExitCode2
FAIL: ./smptests/smpipi01 FAIL FAIL N/A N/A
FAIL: ./smptests/smpthreadlife01 FAIL FAIL N/A N/A
FAIL: ./fstests/imfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/jffs2_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mdosfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mimfs_fsscandir01 OK FAIL 5 0
FAIL: ./fstests/mrfs_fsscandir01 OK FAIL 5 0
FAIL: ./psxtests/psxshm01 FAIL FAIL N/A N/A
FAIL: ./psxtests/psxshm02 FAIL FAIL N/A N/A
FAIL: ./sptests/spinternalerror01 OK N/A -559038737 1611526157
FAIL: ./sptests/sptimecounter01 OK N/A 5 0
SUMMARY
Tests failing: 11
Tests successful: 576
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|