misc: xilinx_sdfec: Support poll file operation

Support monitoring and detecting the SD-FEC error events
through IRQ and poll file operation.

The SD-FEC device can detect one-error or multi-error events.
An error triggers an interrupt which creates and run the ONE_SHOT
IRQ thread.
The ONE_SHOT IRQ thread detects type of error and pass that
information to the poll function.
The file_operation callback poll(), collects the events and
updates the statistics accordingly.
The function poll blocks() on waiting queue which can be
unblocked by ONE_SHOT IRQ handling thread.

Support SD-FEC interrupt set ioctl callback.
The SD-FEC can detect two type of errors: coding errors (ECC) and
a data interface errors (TLAST).
The errors are  events which can trigger an IRQ if enabled.
The driver can monitor and detect these errors through IRQ.
Also the driver updates the statistical data.

Tested-by: Dragan Cvetic <dragan.cvetic@xilinx.com>
Signed-off-by: Derek Kiernan <derek.kiernan@xilinx.com>
Signed-off-by: Dragan Cvetic <dragan.cvetic@xilinx.com>
Link: https://lore.kernel.org/r/1564216438-322406-6-git-send-email-dragan.cvetic@xilinx.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Dragan Cvetic
2019-07-27 09:33:55 +01:00
committed by Greg Kroah-Hartman
parent 77dd39d924
commit cc538f609d
2 changed files with 249 additions and 4 deletions

View File

@@ -251,6 +251,19 @@ struct xsdfec_ldpc_param_table_sizes {
* XSDFEC IOCTL List
*/
#define XSDFEC_MAGIC 'f'
/**
* DOC: XSDFEC_SET_IRQ
* @Parameters
*
* @struct xsdfec_irq *
* Pointer to the &struct xsdfec_irq that contains the interrupt settings
* for the SD-FEC core
*
* @Description
*
* ioctl to enable or disable irq
*/
#define XSDFEC_SET_IRQ _IOW(XSDFEC_MAGIC, 3, struct xsdfec_irq)
/**
* DOC: XSDFEC_SET_TURBO
* @Parameters