Wiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
resources:tools-software:linux-drivers:iio-adc:ad400x [02 Nov 2018 09:34]
mirceac
resources:tools-software:linux-drivers:iio-adc:ad400x [14 Nov 2018 11:26] (current)
mirceac [Status]
Line 1: Line 1:
-====== AD4003/​AD4007/​AD4011/​AD4020 Linux Driver ======+====== AD4003/​AD4007/​AD4011/​AD4020/​ADAQ40XX ​Linux Driver ======
  
 ===== Supported Devices ===== ===== Supported Devices =====
Line 8: Line 8:
   * [[adi>​AD4011]]   * [[adi>​AD4011]]
   * [[adi>​AD4020]]   * [[adi>​AD4020]]
 +  * [[adi>​ADAQ4003]]
  
 ===== Evaluation Boards ===== ===== Evaluation Boards =====
Line 20: Line 21:
  
 ^ Source ^ Mainlined? ^ ^ Source ^ Mainlined? ^
-| [[linux.github>​master/​drivers/​iio/​adc/​ad7124.c|git]] | [In progress...] |+| [[linux.github>​master/​drivers/​iio/​adc/​ad400x.c|git]] | [No] |
  
 ===== Files ===== ===== Files =====
  
 ^ Function ^ File ^ ^ Function ^ File ^
-| driver ​ | [[linux.github>​master/​drivers/​iio/​adc/​ad7124.c]] | +| driver ​ | [[linux.github>​master/​drivers/​iio/​adc/​ad400x.c]] | 
-| devicetree bindings | [[linux.github>​master?​Documentation/​devicetree/​bindings/​iio/​adc/​adi,​ad7124.txt | Documentation/​devicetree/​bindings/​iio/​adc/​adi,ad7124.txt]] |+| devicetree bindings | [[linux.github>​master?​Documentation/​devicetree/​bindings/​iio/​adc/​adi,​ad7124.txt | Documentation/​devicetree/​bindings/​iio/​adc/​ad400x.txt]] | 
 + 
 +====== Driver setup ====== 
 +Since AD4003/​4007/​4011/​4020 are high speed analog-to-digital converters with speeds up to 2 Msps additional components are required in order to achieve high performance. In this scenario the following hdl components are required: 
 +  * [[resources:​fpga:​peripherals:​spi_engine|SPI Engine]] 
 +  * [[resources:​fpga:​docs:​axi_dmac|High-Speed DMA Controller Peripheral]] 
 + 
 +The device will interface with these components and follow the device tree bindings.  
 + 
 +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​ 
 +<​xterm>​ 
 +&​fpga_axi {                                                                       
 +         ​rx_dma:​ rx-dmac@44a30000 {                                                
 +                 ​compatible = "​adi,​axi-dmac-1.00.a"; ​                              
 +                 reg = <​0x44a30000 0x1000>; ​                                       
 +                 #​dma-cells = <​1>; ​                                                
 +                 ​interrupts = <0 57 0>; ​                                           
 +                 ​clocks = <&​clkc 16>; ​                                             
 +                                                                                   
 +                 ​adi,​channels {                                                    
 +                         #​size-cells = <​0>; ​                                       
 +                         #​address-cells = <​1>; ​                                    
 +                                                                                   
 +                         ​dma-channel@0 {                                           
 +                                 reg = <​0>; ​                                       
 +                                 ​adi,​source-bus-width = <​32>; ​                     
 +                                 ​adi,​source-bus-type = <​1>; ​                       
 +                                 ​adi,​destination-bus-width = <​64>; ​                
 +                                 ​adi,​destination-bus-type = <​0>; ​                  
 +                         ​}; ​                                                       
 +                 ​}; ​                                                               
 +         ​}; ​                                                                       
 +                                                                                   
 +         ​axi_spi_engine_0:​ axi-spi-engine@44a00000 {                               
 +                 ​compatible = "​adi,​axi-spi-engine-1.00.a"; ​                        
 +                 reg = <​0x44a00000 0x1000>; ​                                       
 +                 ​interrupt-parent = <&​intc>; ​                                      
 +                 ​interrupts = <0 56 4>; ​                                           
 +                 ​clocks = <&​clkc 15 &clkc 15>; ​                                    
 +                 ​clock-names = "​s_axi_aclk",​ "​spi_clk"; ​                           
 +                 ​num-cs = <​1>; ​                                                    
 +                                                                                  
 +                 #​address-cells = <​0x1>; ​                                          
 +                 #​size-cells = <​0x0>; ​                                             
 +                                                                                   
 +                 ​ad4020:​ adc@0 {                                                   
 +                         ​compatible = "​ad4020"; ​                                   
 +                         reg = <​0>; ​                                               
 +                         ​spi-max-frequency = <​71000000>; ​                          
 +                                                                                   
 +                         dmas = <&​rx_dma 0>; ​                                      
 +                         ​dma-names = "​rx"; ​                                        
 +                                                                                   
 +                         ​vref-supply = <&​vref>; ​                                   
 +                         #​io-channel-cells = <​1>; ​                                 
 +                 ​}; ​                                                               
 +         ​}; ​                                                                       
 + ​}; ​    
 +</​xterm></​WRAP>​
  
 ====== Driver testing ====== ====== Driver testing ======
Line 37: Line 96:
 </​WRAP>​\\ </​WRAP>​\\
  
 +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​
 +<​xterm>​
 +root@analog:/​sys/​bus/​iio/​devices#​ ls -l
 +total 0
 +lrwxrwxrwx 1 root root 0 Jan  1  1970 iio:device0 -> ../​../​../​devices/​soc0/​fpga-axi@0/​44a00000.axi-spi-engine/​spi_master/​spi0/​spi0.0/​iio:​device0
 +lrwxrwxrwx 1 root root 0 Jan  1  1970 iio:device1 -> ../​../​../​devices/​soc0/​amba/​f8007100.adc/​iio:​device1
 +lrwxrwxrwx 1 root root 0 Jan  1  1970 iio_sysfs_trigger -> ../​../​../​devices/​iio_sysfs_trigger
 +
 +root@analog:/​sys/​bus/​iio/​devices# ​
 +root@analog:/​sys/​bus/​iio/​devices#​ cd iio\:​device0
 +root@analog:/​sys/​bus/​iio/​devices/​iio:​device0#​ ls -l
 +total 0
 +drwxrwxrwx 2 root root    0 Jan  1  1970 buffer
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 dev
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 in_voltage0_raw
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 in_voltage0_scale
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 name
 +lrwxrwxrwx 1 root root    0 Nov  2 08:43 of_node -> ../​../​../​../​../​../​../​../​firmware/​devicetree/​base/​fpga-axi@0/​axi-spi-engine@44a00000/​adc@0
 +drwxrwxrwx 2 root root    0 Jan  1  1970 power
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 sampling_frequency
 +drwxrwxrwx 2 root root    0 Jan  1  1970 scan_elements
 +lrwxrwxrwx 1 root root    0 Nov  2 08:43 subsystem -> ../​../​../​../​../​../​../​../​bus/​iio
 +-rw-rw-rw- 1 root root 4096 Jan  1  1970 uevent
 +
 +</​xterm></​WRAP>​
 +
 +=== Show device name ===
 +
 +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​
 +<​xterm>​
 +root@analog:/​sys/​bus/​iio/​devices/​iio:​device0#​ cat name
 +ad4020
 +</​xterm></​WRAP>​
 +
 +=== Show channel scale ===
 +
 +**Description:​**\\
 +Scale to be applied to in_voltagex_raw in order to obdatin the measured voltage in millivolts
 +
 +<WRAP box bggreen><​wrap info>​This specifies any shell prompt running on the target</​wrap>​
 +<​xterm>​
 +root@analog:/​sys/​bus/​iio/​devices/​iio:​device0#​ cat in_voltage0_scale ​
 +0.002384185
 +</​xterm></​WRAP>​
 +
 +====== More Information ======
  
 +{{page>​software:​linux:​docs:​iio:​iio_snippets#​iio pointers&​noheader&​firstseconly&​noeditbtn}}
resources/tools-software/linux-drivers/iio-adc/ad400x.1541147656.txt.gz · Last modified: 02 Nov 2018 09:34 by mirceac