Both sides previous revisionPrevious revisionNext revision | Previous revision |
resources:tools-software:linux-drivers:iio-adc:axi-adc-hdl [28 May 2019 12:19] – [Files] Michael Hennerich | resources:tools-software:linux-drivers:iio-adc:axi-adc-hdl [13 Jun 2022 13:11] (current) – [Driver testing] Michael Hennerich |
---|
* [[resources/eval/user-guides/ad-fmcomms5-ebz |AD-FMCOMMS5-EBZ FMC Card]] | * [[resources/eval/user-guides/ad-fmcomms5-ebz |AD-FMCOMMS5-EBZ FMC Card]] |
* [[resources/eval/user-guides/ad-fmcomms6-ebz|AD-FMCOMMS6-EBZ FMC Card]] | * [[resources/eval/user-guides/ad-fmcomms6-ebz|AD-FMCOMMS6-EBZ FMC Card]] |
* [[resources/fpga/xilinx/fmc/ad-fmcjesdadc1-ebz| AD-FMCJESDADC1-EBZ FMC Card]] see also [[/resources/tools-software/linux-drivers/iio-adc/axi-jesd204b-hdl|AXI JESD204B Driver]] | * [[resources/fpga/xilinx/fmc/ad-fmcjesdadc1-ebz| AD-FMCJESDADC1-EBZ FMC Card]] |
* [[resources/eval/user-guides/ad-fmcadc2-ebz|AD-FMCADC2-EBZ FMC Card]] | * [[resources/eval/user-guides/ad-fmcadc2-ebz|AD-FMCADC2-EBZ FMC Card]] |
* [[resources/eval/user-guides/ad-fmcdaq2-ebz|AD-FMCDAQ2-EBZ FMC Card]] | * [[resources/eval/user-guides/ad-fmcdaq2-ebz|AD-FMCDAQ2-EBZ FMC Card]] |
* [[resources/fpga/xilinx/fmc/ad9467 |AD9467 Native FMC Card]] | * [[resources/fpga/xilinx/fmc/ad9467 |AD9467 Native FMC Card]] |
* [[resources/fpga/xilinx/interposer/ad9467 |AD9467 Evaluation Board, ADC-FMC Interposer]] | * [[resources/fpga/xilinx/interposer/ad9467 |AD9467 Evaluation Board, ADC-FMC Interposer]] |
* [[resources/fpga/xilinx/interposer/ad9250 |AD9250 Evaluation Board, ADC-FMC Interposer]] see also [[/resources/tools-software/linux-drivers/iio-adc/axi-jesd204b-hdl|AXI JESD204B Driver]] | * [[resources/fpga/xilinx/interposer/ad9250 |AD9250 Evaluation Board, ADC-FMC Interposer]] |
* [[resources/fpga/xilinx/fmc/ad9265|AD9265 Native FMC Card]] | * [[resources/fpga/xilinx/fmc/ad9265|AD9265 Native FMC Card]] |
* [[resources/eval/user-guides/mykonos | ADRV9371 FMC Card]] | * [[resources/eval/user-guides/mykonos | ADRV9371 FMC Card]] |
| |
| ===== Sub device Documentation (linked mode) ===== |
| |
| * [[resources:tools-software:linux-drivers:iio-adc:ad9208|AD9208 ADC Linux Driver]] |
| |
| |
| driver | [[linux.github>master?drivers/iio/adc/ad9361_conv.c | drivers/iio/adc/ad9371_conv.c]] | | | driver | [[linux.github>master?drivers/iio/adc/ad9361_conv.c | drivers/iio/adc/ad9371_conv.c]] | |
| driver | [[linux.github>master?drivers/iio/adc/adrv9009_conv.c | drivers/iio/adc/adrv9009_conv.c]] | | | driver | [[linux.github>master?drivers/iio/adc/adrv9009_conv.c | drivers/iio/adc/adrv9009_conv.c]] | |
| driver | [[linux.github>master?drivers/iio/adc/cf_axi_adc_core.c | drivers/iio/adc/cf_axi_adc_core.c]] | | | core driver | [[linux.github>master?drivers/iio/adc/cf_axi_adc_core.c | drivers/iio/adc/cf_axi_adc_core.c]] | |
| driver | [[linux.github>master?drivers/iio/adc/cf_axi_adc_ring_stream.c | drivers/iio/adc/cf_axi_adc_ring_stream.c]] | | | core driver | [[linux.github>master?drivers/iio/adc/cf_axi_adc_ring_stream.c | drivers/iio/adc/cf_axi_adc_ring_stream.c]] | |
| include | [[linux.github>master?drivers/iio/adc/cf_axi_adc.h | drivers/iio/adc/cf_axi_adc.h]] | | | core include | [[linux.github>master?drivers/iio/adc/cf_axi_adc.h | drivers/iio/adc/cf_axi_adc.h]] | |
| |
| |
* "adi,axi-ad6676-1.0" | * "adi,axi-ad6676-1.0" |
* "adi,axi-ad9684-1.0" | * "adi,axi-ad9684-1.0" |
| * "adi,axi-ad9371-rx-1.0" |
| * "adi,axi-ad9684-1.0" |
| * "adi,axi-adrv9009-rx-1.0" |
| * "adi,axi-ad9208-1.0" |
* For a complete list see driver source: static const struct of_device_id axiadc_of_match[] | * For a complete list see driver source: static const struct of_device_id axiadc_of_match[] |
| |
| |
&fpga_axi { | &fpga_axi { |
rx_dma: rx-dmac@44A30000 { | rx_dma: rx-dmac@44a30000 { |
compatible = "adi,axi-dmac-1.00.a"; | compatible = "adi,axi-dmac-1.00.a"; |
reg = <0x44A30000 0x10000>; | reg = <0x44A30000 0x10000>; |
clocks = <&clkc 16>; | clocks = <&clkc 16>; |
| |
dma-channel { | adi,channels { |
adi,type = <0>; | #size-cells = <0>; |
| #address-cells = <1>; |
| |
| dma-channel@0 { |
| reg = <0>; |
| adi,source-bus-width = <16>; |
| adi,source-bus-type = <2>; |
| adi,destination-bus-width = <64>; |
| adi,destination-bus-type = <0>; |
| }; |
}; | }; |
}; | }; |
| |
cf_ad9467_core_0: cf-ad9467-core-lpc@44A00000 { | cf_ad9467_core_0: cf-ad9467-core-lpc@44a00000 { |
compatible = "xlnx,cf-ad9467-core-1.00.a"; | compatible = "xlnx,cf-ad9467-core-1.00.a"; |
reg = <0x44A00000 0x10000>; | reg = <0x44A00000 0x10000>; |
dmas = <&rx_dma 0>; | dmas = <&rx_dma 0>; |
dma-names = "rx"; | dma-names = "rx"; |
| |
spibus-connected = <&adc_ad9467>; | spibus-connected = <&adc_ad9467>; |
} ; | }; |
}; | }; |
</code> | </code> |
====== Enabling Linux driver support ====== | ====== Enabling Linux driver support ====== |
"make qconfig") | "make qconfig") |
| |
<code> | <code> |
Linux Kernel Configuration | Linux Kernel Configuration |
Device Drivers ---> | Device Drivers ---> |
*** Analog to digital converters *** | *** Analog to digital converters *** |
[--snip--] | [--snip--] |
| -*- Analog Devices High-Speed AXI ADC driver core |
<*> Analog Devices AD9467 AD9643 High-Speed AXI ADC driver | <*> Analog Devices AD9208 and similar high speed ADCs |
| <*> Analog Devices AD9371 RF Transceiver driver |
| <*> Analog Devices ADRV9009/ADRV9008 RF Transceiver driver |
| <*> Analog Devices AD6676 Wideband IF Receiver driver |
| <*> Analog Devices AD9467 etc. high speed ADCs |
| <*> Analog Devices AD9680 and similar high speed ADCs |
[--snip--] | [--snip--] |
</code> | </code> |
</xterm></WRAP> | </xterm></WRAP> |
| |
| === External Synchronization === |
| |
in_voltage0_test_mode:off | The [[resources:fpga:peripherals:jesd204:jesd204_tpl_adc|ADC TPL HDL]] core supports the [[resources:fpga:peripherals:jesd204:jesd204_tpl_adc#External_synchronization|EXT_SYNC]] feature, allowing to synchronize multiple channels within a ADC or across multiple instances. |
| This feature can also synchronize between the [[resources:fpga:peripherals:jesd204:jesd204_tpl_adc|ADC TPL HDL]] and [[resources:fpga:peripherals:jesd204:jesd204_tpl_dac|DAC TPL HDL]] core. |
| |
| There are two device attributes which allows controlling this feature: |
| ''sync_start_enable'' and ''sync_start_enable_available'' reading the |
| later returns the available modes which depend on HDL core synthesis |
| parameters. The options are explained below. Reading 'sync_start_enable' |
| returns either 'arm' while waiting for the external synchronization |
| signal or 'disarm' otherwise. |
| |
| * ''arm'': Setting this key will arm the trigger mechanism sensitive to an external sync signal. Once the external sync signal goes high it synchronizes channels within a ADC, and across multiple instances. This key has an effect only the EXT_SYNC synthesis parameter is set. |
| |
| * ''disarm'': Setting this key will disarm the trigger mechanism sensitive to an external sync signal. This key has an effect only the EXT_SYNC synthesis parameter is set. |
| |
| * ''trigger_manual'': Setting this key will issue an external sync event if it is hooked up inside the fabric. This key has an effect only the EXT_SYNC synthesis parameter is set. |
| |
| == Example: == |
| |
| <WRAP box bggreen><wrap info>This specifies any shell prompt running on the target</wrap> |
| <xterm> |
| root@analog:/sys/bus/iio/devices/iio:device3# **cat sync_start_enable_available** |
| **arm disarm trigger_manual** |
| root@analog:/sys/bus/iio/devices/iio:device3# **cat sync_start_enable** |
| **disarm** |
| root@analog:/sys/bus/iio/devices/iio:device3# **echo arm > sync_start_enable** |
| root@analog:/sys/bus/iio/devices/iio:device3# **cat sync_start_enable** |
| **arm** |
| root@analog:/sys/bus/iio/devices/iio:device3# **echo trigger_manual > sync_start_enable** |
| root@analog:/sys/bus/iio/devices/iio:device3# **cat sync_start_enable** |
| **disarm** |
| </xterm></WRAP> |
===== Buffer management ===== | ===== Buffer management ===== |
| |