lkml.org 
[lkml]   [2019]   [Jun]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH V7 00/11] misc: xilinx sd-fec drive
    Date
    This patchset is adding the full Soft Decision Forward Error
    Correction (SD-FEC) driver implementation, driver DT binding and
    driver documentation.

    Forward Error Correction (FEC) codes such as Low Density Parity
    Check (LDPC) and turbo codes provide a means to control errors in
    data transmissions over unreliable or noisy communication
    channels. The SD-FEC Integrated Block is an optimized block for
    soft-decision decoding of these codes. Fixed turbo codes are
    supported directly, whereas custom and standardized LDPC codes
    are supported through the ability to specify the parity check
    matrix through an AXI4-Lite bus or using the optional programmable
    (PL)-based support logic. For the further information see
    https://www.xilinx.com/support/documentation/ip_documentation/
    sd_fec/v1_1/pg256-sdfec-integrated-block.pdf

    This driver is a platform device driver which supports SDFEC16
    (16nm) IP. SD-FEC driver supports LDPC decoding and encoding and
    Turbo code decoding. LDPC codes can be specified on
    a codeword-by-codeword basis, also a custom LDPC code can be used.

    The SD-FEC driver exposes a char device interface and supports
    file operations: open(), close(), poll() and ioctl(). The driver
    allows only one usage of the device, open() limits the number of
    driver instances. The driver also utilize Common Clock Framework
    (CCF).

    The control and monitoring is supported over ioctl system call.
    The features supported by ioctl():
    - enable or disable data pipes to/from device
    - configure the FEC algorithm parameters
    - set the order of data
    - provide a control of a SDFEC bypass option
    - activates/deactivates SD-FEC
    - collect and provide statistical data
    - enable/disable interrupt mode

    Poll can be utilized to detect errors on IRQ trigger rather than
    using looping status and stats ioctl's.

    Tested-by: Santhosh Dyavanapally <SDYAVANA@xilinx.com>
    Tested by: Punnaiah Choudary Kalluri <punnaia@xilinx.com>
    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>

    Changes V1 -> V2:
    - Removed unnecesary comenting from the commit messages.
    - Removed error log messages which can be triggered from user space.
    - Corrected the SDFEC table end addresses.
    - Removed casting between user pointer and kernel pointer.
    - Corrected definition of ioctl command code, used a corect type for
    size parameters.
    - Changes to declarations of IOCTL that pass structures, i.e. do not
    use pointers for sizeof as prevents compile time checks
    - IOCTL size fix, using a paging to manage a memory. Implemented a big
    tables transfer from user to kernel with get_user_pages_fast().
    - Removed unnecessary check after container_of.
    - Removed not needed ioctl code checkes inside ioctl handler.
    - Implemented compat_ioctl.
    - Updated reviewer and tester lists.
    - Updated documentation, added Limitation chapter related to fork()
    and dup().

    Link to V1 patch series:
    https://lore.kernel.org/lkml/1552997064-432700-1-git-send-email-dragan.cvetic@xilinx.com/

    Changes V2 -> V3:
    - Corrected a licence in xilinx_sdfec.h changed to uapi licence format.
    - Corrected driver variable data types into user space data types.

    Link to V2 patch series:
    https://lore.kernel.org/lkml/1554804414-206099-1-git-send-email-dragan.cvetic@xilinx.com/

    Changes V3 -> V4:
    - Migrate to simplier misc driver
    - Fix DT example
    - Remove helper function
    - Remove unused open_count variable
    - Remove some logs
    - Change log level to dev_dbg in the most logs
    - Change spin lock to spin_lock_irqsave/spin_lock_irqrestore
    - Correct a licence date in xilinx_sdfec.c
    - Add PTR_ERR in clock handling

    Link to V3 patch series:
    https://lore.kernel.org/lkml/1556402706-176271-1-git-send-email-dragan.cvetic@xilinx.com/

    Changes V4 -> V5:
    - change atomic variables to c type variables
    - align spinlock name to better description
    - correct a logicla error in LDPC algorithm
    - remove log messages
    - remove useless if statements
    - remove not needed fec_id variable
    - squash commit 4 with 6

    Link to V4 patch series:
    https://lore.kernel.org/lkml/1558784245-108751-1-git-send-email-dragan.cvetic@xilinx.com/

    Changes V5 -> V6:
    - the kernle/user space variables convert enums to __u32
    - put device ID under IDR

    Link to V5 patch series:
    https://lore.kernel.org/lkml/1560038656-380620-1-git-send-email-dragan.cvetic@xilinx.com/

    Changes V6 -> V7:
    - Fix maintainers list

    Link to V6 patch series:
    https://lore.kernel.org/lkml/1560174314-124649-1-git-send-email-dragan.cvetic@xilinx.com/

    Dragan Cvetic (11):
    dt-bindings: xilinx-sdfec: Add SDFEC binding
    misc: xilinx-sdfec: add core driver
    misc: xilinx_sdfec: Add CCF support
    misc: xilinx_sdfec: Store driver config and state
    misc: xilinx_sdfec: Add ability to configure turbo
    misc: xilinx_sdfec: Add ability to configure LDPC
    misc: xilinx_sdfec: Add ability to get/set config
    misc: xilinx_sdfec: Support poll file operation
    misc: xilinx_sdfec: Add stats & status ioctls
    Docs: misc: xilinx_sdfec: Add documentation
    MAINTAINERS: add maintainer for SD-FEC

    .../devicetree/bindings/misc/xlnx,sd-fec.txt | 58 +
    Documentation/misc-devices/index.rst | 1 +
    Documentation/misc-devices/xilinx_sdfec.rst | 291 ++++
    MAINTAINERS | 9 +
    drivers/misc/Kconfig | 12 +
    drivers/misc/Makefile | 1 +
    drivers/misc/xilinx_sdfec.c | 1516 ++++++++++++++++++++
    include/uapi/misc/xilinx_sdfec.h | 448 ++++++
    8 files changed, 2336 insertions(+)
    create mode 100644 Documentation/devicetree/bindings/misc/xlnx,sd-fec.txt
    create mode 100644 Documentation/misc-devices/xilinx_sdfec.rst
    create mode 100644 drivers/misc/xilinx_sdfec.c
    create mode 100644 include/uapi/misc/xilinx_sdfec.h

    --
    2.7.4

    \
     
     \ /
      Last update: 2019-06-11 19:31    [W:2.609 / U:1.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site