• Lars-Peter Clausen's avatar
    iio:adc: Add Xilinx XADC driver · bdc8cda1
    Lars-Peter Clausen authored
    The Xilinx XADC is a ADC that can be found in the series 7 FPGAs from Xilinx.
    The XADC has a DRP interface for communication. Currently two different
    frontends for the DRP interface exist. One that is only available on the ZYNQ
    family as a hardmacro in the SoC portion of the ZYNQ. The other one is available
    on all series 7 platforms and is a softmacro with a AXI interface. This driver
    supports both interfaces and internally has a small abstraction layer that hides
    the specifics of these interfaces from the main driver logic.
    
    The ADC has a couple of internal channels which are used for voltage and
    temperature monitoring of the FPGA as well as one primary and up to 16 channels
    auxiliary channels for measuring external voltages. The external auxiliary
    channels can either be directly connected each to one physical pin on the FPGA
    or they can make use of an external multiplexer which is responsible for
    multiplexing the external signals onto one pair of physical pins.
    
    The voltage and temperature monitoring channels also have an event capability
    which allows to generate a interrupt when their value falls below or raises
    above a set threshold.
    
    Buffered sampling mode is supported by the driver, but only for AXI-XADC since
    the ZYNQ XADC interface does not have capabilities for supporting buffer mode
    (no end-of-conversion interrupt). If buffered mode is supported the driver will
    register two triggers. One "xadc-samplerate" trigger which will generate samples
    with the configured samplerate. And one "xadc-convst" trigger which will
    generate one sample each time the CONVST (conversion start) signal is asserted.
    Signed-off-by: default avatarLars-Peter Clausen <lars@metafoo.de>
    Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
    bdc8cda1
xilinx-xadc-core.c 33.8 KB