summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/sparc/shared/spw/grspw_pkt.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* bsps/sparc: Move shared files to bspsSebastian Huber2018-04-201-3327/+0
| | | | | | This patch is a part of the BSP source reorganization. Update #3285.
* leon, grspw_pkt: fix overwrite protection when more than 32 devsDaniel Hellstrom2017-03-061-1/+1
| | | | This is a fix for a coverity warning
* leon, grspw_pkt: SMP supportDaniel Hellstrom2017-03-061-36/+46
| | | | | | | | | | The driver already was developed with SMP in mind however SMP was disabled waiting for final fixups and testing. The new function to control the affinity of the ISR was added but does not work for now since the LEON BSP does not reroute IRQs between CPUs during run-time: grspw_isr_affinity()
* leon, grspw_pkt: unregister ISR on closeDaniel Hellstrom2017-03-061-0/+3
|
* leon, grspw_pkt: ISR activate shutdown work only if errintr enabledDaniel Hellstrom2017-03-061-1/+2
| | | | | | In shared interrupt systems it might be a problem to handle the interrupt regardless of the interrupt is enabled. Now the same approach to the DMA RX/TX interrupt in the ISR is taken.
* leon, grspw_pkt: fix descriptor table mem leak on grspw_close()Daniel Hellstrom2017-03-061-0/+6
|
* leon, grspw_pkt: add missing GRSPW1 IP-core supportDaniel Hellstrom2017-03-061-0/+23
|
* leon, grspw_pkt: ISR RX/TX DMA interrupt source disable configurableDaniel Hellstrom2017-03-061-11/+37
| | | | | | | | | | | | | | This patch introduces some new options to let the user control when the ISR shall disable DMA RX/TX interrupt. The ISR can be set in three modes when a RX/TX DMA interrupt is asserted: 1) ISR will always clear both RX/TX DMA interrupt enable. (DEFAULT). 2) ISR will never never RX or TX DMA interrupt enable, ISR will leave RX/TX DMA interrupt enable untouched. 3) ISR will clear the interrupt enable(s) causing the interrupt, this allows separate RX and TX IRQ handling. This patch is backwards compatible since default mode 1) is activated when the grspw_dma_config.flags DMAFLAGS2_IRQD field is 0.
* leon, grpsw_pkt: set unique work-task nameDaniel Hellstrom2017-03-061-2/+6
|
* leon, grspw_pkt: functions to support custom work-taskDaniel Hellstrom2017-03-061-76/+113
| | | | | | | Added new function: * grspw_dma_ctrlsts() - Read value of DMA CTRL/STS reg. * grspw_dma_enable_int() - re-enable interrupt, used when implementing a custom work-task.
* leon, grspw_pkt: fix interrupt code ctrl bit declarationsDaniel Hellstrom2017-03-061-1/+1
|
* leon, grspw_pkt: added work-task configuration optionsDaniel Hellstrom2017-03-061-73/+179
| | | | | | | | | | | | | | Following changes: * possible for user to create work-tasks and assign custom message queues. * possible for user to override default ISR message to implement custom handling of DMA error, DMA RX/TX and link error from ISR. * work-task now checks message to determine which work to perform rather than looking at registers only, this makes it possible for user to implement custom handling. * exported work-queue message definitions and separated them so that a user can assign custom DMA RX/TX handling of a specific DMA channel. * added a work-task event callback to let user add custom handling or monitoring of DMA Stop, DMA error, Link Error or work-task exits etc.
* leon, grspw_pkt: Added checks for special list casesDaniel Hellstrom2017-03-061-2/+2
| | | | | | | | - Fixed grspw_dma_tx_send() so that it does not fail when an empty user packet is provided. - Added empty checks on some of the list handling inline functions for GRSPW_PKT. Their use by the driver may be correct already, but the user might not have been aware of the assumptions that certain lists had to be non-empty.
* leon, grspw_pkt: fix stscfg cfg TimeCode Int clrDaniel Hellstrom2017-03-061-1/+2
| | | | | Without this patch time code interrupts was never cleared in the STATUS register.
* leon, grspw_pkt: split DMA sem into RX and TX semDaniel Hellstrom2017-03-061-54/+94
| | | | | | | By introducing a spearate RX and TX DMA channel semaphore RX operations and TX operations does not block each other. Stopping a DMA channel needs now to take both RX and TX semaphores to block out both RX and TX tasks.
* leon, grspw_pkt: coding style fixDaniel Hellstrom2017-03-061-1/+1
|
* leon, grspw_pkt: allow user controlled DMA intrDaniel Hellstrom2017-03-061-5/+7
| | | | | | | The user has already the power to control which DMA buffer will generate interrupt, but no clean way to enable RX/TX interrupts on DMA channel. Without this patch the user had to init DMA config rx/tx_irq_en_cnt to a very large value.
* leon, grspw_pkt: support for reading tx/rx DMA queueDaniel Hellstrom2017-03-061-4/+72
| | | | | | | | | | * Add support for reading the GRSPW TX/RX descriptor counters directly. * Add semaphore lock to counters to avoid couters being out of sync * This makes it possible for the user in polling mode to check the amount of work before entering RX/TX descriptor table processing.
* leon, grspw_pkt: fixed device/dma closingDaniel Hellstrom2017-03-061-13/+31
| | | | | | | | | The user is now responsible to stop and close the DMA channels before closing the device. To prevent complicated situations and blocking the caller of grspw_close and grspw_dma_close a return code was added to indicate to the user that the DMA may not have been stopped or that blocked tasks are still active within the driver for the specified device.
* leon, grspw_pkt: fixed and improved RX/TX waitDaniel Hellstrom2017-03-061-42/+57
|
* leon, grspw_pkt: fixed error return path in dma_openDaniel Hellstrom2017-03-061-12/+31
|
* leon, grspw_pkt: Manual handling of link status eventsDaniel Hellstrom2017-03-061-2/+15
| | | | | | | Added functionality for manual handling of link status events, configurable via grspw_link_ctrl. Added statistics counter for disconnect error.
* leon, grspw_pkt: added link_ctrl optionsDaniel Hellstrom2017-03-061-6/+11
| | | | | | | | | Improved the link error handling options. Its now possible to disable the link on individual link errors/warnings instead of always on all or none. Changed name of LINKOPTS_IRQ to LINKOPTS_EIRQ to match Linux and VxWorks SpW driver.
* leon, grspw_pkt: added grspw_link_status_clr() to APIDaniel Hellstrom2017-03-061-0/+8
|
* leon, grspw_pkt: code style clean-upsDaniel Hellstrom2017-03-061-8/+9
|
* leon, grspw_pkt: Preserve DMA address enable at start.Martin Aberg2017-03-061-0/+4
| | | | | The EN bit (enable separate node address for this channel) is preserved when grspw_dma_start is called. This preserves any previous address configuration.
* leon, grspw_pkt: Fixed parameter check in grspw_dma_open()Martin Aberg2017-03-061-1/+1
|
* DRVMGR: KEY_TYPE now a enum drvmgr_ktDaniel Hellstrom2015-04-171-2/+2
|
* sparc bsps: updated license to rtems.orgDaniel Hellstrom2015-04-171-1/+1
|
* LEON: move driver headers to bsp/ directoryDaniel Hellstrom2015-04-171-1/+1
|
* GRSPW_PKT: fix build warningsDaniel Hellstrom2015-04-171-1/+1
|
* GRSPW_PKT: Add support for Interrupt-codesAndreas Larsson2015-04-171-17/+292
| | | | | Update: Daniel Hellstrom updated SpW-IRQ implementation accoring to changes in hardware register layout and features.
* GRSPW: Fix incorrect register defines - presently functionally inconsequentialAndreas Larsson2015-04-171-4/+4
|
* GRSPW: New packet based driver for SPW/SPW2/SPW2_DMADaniel Hellstrom2015-04-171-0/+2642
This patch adds a new driver for the GRSPW SpaceWire AMBA interface family. The new driver does not implement a standard RTEMS driver, instead it provides only a library interface to the GRSPW devices. This driver can be used to implement a RTEMS I/O driver or used directly. New features compared with old GRSPW driver: * zero-copy packet interface * possibility to send/receive mulitple packets per call * optional interrupt awaken work-task to process TX/RX queues * DMA channels support. Before only first DMA channel supported * Separate DMA and link control * Packet based error flags