Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 99 additions & 0 deletions arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4355.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Analog Devices ada4355
*
* hdl_project: <ada4355_fmc/zed>
* board_revision: <>
*
* Copyright (C) 2025 Analog Devices Inc.
*/
/dts-v1/;

#include <dt-bindings/gpio/gpio.h>

#include "zynq-zed.dtsi"
#include "zynq-zed-adv7511.dtsi"

&fpga_axi {
rx_dma: rx-dmac@44a30000 {
compatible = "adi,axi-dmac-1.00.a";
reg = <0x44A30000 0x10000>;
#dma-cells = <1>;
interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
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 = <2>;
adi,destination-bus-width = <64>;
adi,destination-bus-type = <0>;
};
};
};

ada4355: ada4355@44a00000 {
compatible = "adi,axi-adc-10.0.a";
reg = <0x44A00000 0x10000>;
dmas = <&rx_dma 0>;
dma-names = "rx";

spibus-connected = <&adc_ada4355>;
};
};

&spi0 {
status = "okay";
};

#define fmc_spi spi0

/ {
ada4355_fixed_clock: ada4355_fixed_clock{
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <125000000>;
};

gpio-control@0 {
compatible = "adi,one-bit-adc-dac";
#address-cells = <1>;
#size-cells = <0>;
out-gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>,
<&gpio0 87 GPIO_ACTIVE_HIGH>,
<&gpio0 88 GPIO_ACTIVE_HIGH>;

channel@0 {
reg = <0>;
label = "GSEL0";
};
channel@1 {
reg = <1>;
label = "GSEL1";
};
channel@2 {
reg = <2>;
label = "FSEL";
};
};

Check warning on line 82 in arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4355.dts

View workflow job for this annotation

GitHub Actions / build_gcc_arm / build

(unit_address_vs_reg): /gpio-control@0: node has a unit name, but no reg or ranges property
};

&fmc_spi {

adc_ada4355: adc_ada4355@0 {
compatible = "adi,ada4355";
reg = <0>;
spi-max-frequency = <100000>;
gpio-vld-en-gpios = <&gpio0 89 GPIO_ACTIVE_HIGH>;

clocks = <&ada4355_fixed_clock>;
clock-names = "adc_clk";
num_lanes = <2>;
spi-cpol;
spi-cpha;
};
};
40 changes: 40 additions & 0 deletions arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4356-lidar.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Analog Devices ADA4356 LiDAR application
*
* hdl_project: <ada4355_fmc/zed>
* board_revision: <>
*
* Copyright (C) 2025 Analog Devices Inc.
*/

#include "zynq-zed-adv7511-ada4356.dts"

&fpga_axi {
/* TDD Controller for LiDAR timing control */
axi_tdd: axi-tdd@44a40000 {
compatible = "adi,axi-tdd";
reg = <0x44a40000 0x10000>;
clocks = <&clkc 15>, <&ada4355_fixed_clock>;
clock-names = "s_axi_aclk", "intf_clk";
};

/* IIO wrapper for TDD - makes sysfs attributes accessible via libiio */
iio_axi_tdd_0: iio-axi-tdd-0@0 {
compatible = "adi,iio-fake-platform-device";
adi,faked-dev = <&axi_tdd>;
adi,attribute-names =
"version", "core_id", "scratch", "magic",
"sync_soft", "sync_external", "sync_internal", "sync_reset",
"enable", "startup_delay_raw", "startup_delay_ms",
"burst_count", "frame_length_raw", "frame_length_ms",
"state", "internal_sync_period_raw", "internal_sync_period_ms",
"out_channel0_enable", "out_channel0_polarity",
"out_channel0_on_raw", "out_channel0_on_ms",
"out_channel0_off_raw", "out_channel0_off_ms",
"out_channel1_enable", "out_channel1_polarity",
"out_channel1_on_raw", "out_channel1_on_ms",
"out_channel1_off_raw", "out_channel1_off_ms";
label = "iio-axi-tdd-0";
};

Check warning on line 39 in arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4356-lidar.dts

View workflow job for this annotation

GitHub Actions / build_gcc_arm / build

(unit_address_vs_reg): /fpga-axi@0/iio-axi-tdd-0@0: node has a unit name, but no reg or ranges property

Check warning on line 39 in arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4356-lidar.dts

View workflow job for this annotation

GitHub Actions / build_gcc_arm / build

(simple_bus_reg): /fpga-axi@0/iio-axi-tdd-0@0: missing or empty reg/ranges property
};
141 changes: 141 additions & 0 deletions arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4356.dts
Original file line number Diff line number Diff line change
@@ -0,0 +1,141 @@
// SPDX-License-Identifier: GPL-2.0
/*
* Analog Devices ada4355
*
* hdl_project: <ada4355_fmc/zed>
* board_revision: <>
*
* Copyright (C) 2025 Analog Devices Inc.
*/
/dts-v1/;

#include <dt-bindings/gpio/gpio.h>

#include "zynq-zed.dtsi"
#include "zynq-zed-adv7511.dtsi"

&fpga_axi {

fmc_i2c: i2c@41620000 {
compatible = "xlnx,axi-iic-1.01.b", "xlnx,xps-iic-2.00.a";
interrupt-parent = <&intc>;
interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;
reg = <0x41620000 0x10000>;

#size-cells = <0>;
#address-cells = <1>;

ad7291@2f {
compatible = "adi,ad7291";
reg = <0x2f>;
};
};

rx_dma: rx-dmac@44a30000 {
compatible = "adi,axi-dmac-1.00.a";
reg = <0x44A30000 0x10000>;
#dma-cells = <1>;
interrupts = <0 57 IRQ_TYPE_LEVEL_HIGH>;
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 = <2>;
adi,destination-bus-width = <64>;
adi,destination-bus-type = <0>;
};
};
};

ada4355: ada4355@44a00000 {
compatible = "adi,axi-adc-10.0.a";
reg = <0x44A00000 0x10000>;
dmas = <&rx_dma 0>;
dma-names = "rx";

spibus-connected = <&adc_ada4355>;
};

};

&spi0 {
status = "okay";
};

#define fmc_spi spi0

/ {
ada4355_fixed_clock: ada4355_fixed_clock{
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <125000000>;
};

gpio-control@0 {
compatible = "adi,one-bit-adc-dac";
#address-cells = <1>;
#size-cells = <0>;
out-gpios = <&gpio0 86 GPIO_ACTIVE_HIGH>,
<&gpio0 87 GPIO_ACTIVE_HIGH>,
<&gpio0 88 GPIO_ACTIVE_HIGH>,
<&gpio0 90 GPIO_ACTIVE_HIGH>,
<&gpio0 91 GPIO_ACTIVE_HIGH>,
<&gpio0 92 GPIO_ACTIVE_HIGH>,
<&gpio0 93 GPIO_ACTIVE_HIGH>,
<&gpio0 95 GPIO_ACTIVE_HIGH>;

channel@0 {
reg = <0>;
label = "GSEL0";
};
channel@1 {
reg = <1>;
label = "GSEL1";
};
channel@2 {
reg = <2>;
label = "FSEL0";
};
channel@3 {
reg = <3>;
label = "GSEL2";
};
channel@4 {
reg = <4>;
label = "GPIO_TEST";
};
channel@5 {
reg = <5>;
label = "GSEL3";
};
channel@6 {
reg = <6>;
label = "FSEL1";
};
channel@7 {
reg = <7>;
label = "VLOGIC";
};
};

Check warning on line 124 in arch/arm/boot/dts/xilinx/zynq-zed-adv7511-ada4356.dts

View workflow job for this annotation

GitHub Actions / build_gcc_arm / build

(unit_address_vs_reg): /gpio-control@0: node has a unit name, but no reg or ranges property
};

&fmc_spi {

adc_ada4355: adc_ada4355@0 {
compatible = "adi,ada4355";
reg = <0>;
spi-max-frequency = <100000>;
gpio-vld-en-gpios = <&gpio0 89 GPIO_ACTIVE_HIGH>;

clocks = <&ada4355_fixed_clock>;
clock-names = "adc_clk";
num_lanes = <2>;
spi-cpol;
spi-cpha;
};
};
2 changes: 2 additions & 0 deletions arch/arm/configs/zynq_xcomm_adv7511_defconfig
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ CONFIG_COMMON_CLK_AXI_CLKGEN=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_MEMORY=y
CONFIG_AXI_JESD204B=y
CONFIG_ADI_AXI_TDD=y
CONFIG_ADI_IIO_FAKEDEV=y
CONFIG_FPGA=y
CONFIG_FPGA_MGR_ZYNQ_FPGA=y
CONFIG_FPGA_MGR_ZYNQ_AFI_FPGA=y
Expand Down
1 change: 1 addition & 0 deletions drivers/iio/Kconfig.adi
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@

# This file exists solely to be include in Kconfig.adi
# It's a bit of hurry-ed-up job; many symbols need to be depended
Expand Down Expand Up @@ -91,6 +91,7 @@
imply LTC2387
imply AD8366
imply ADA4250
imply ADA4355
imply HMC425
imply AD5270
imply AD5360
Expand Down
12 changes: 12 additions & 0 deletions drivers/iio/adc/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,18 @@ config ADAQ8092
To compile this driver as a module, choose M here: the
module will be called adaq8092.


config ADA4355
tristate "Analog Devices ADA4355 uModule Data Acquisition Module"
depends on SPI
depends on CF_AXI_ADC
select REGMAP_SPI
help
Say yes here to build support for Analog Devices ADA4355
14-bit, 125MSPS, high-speed dual-channel analog to digital
converters (ADC) that realize a complete current to bits data
acquisition solution. Provides direct access via sysfs.

config ADM1177
tristate "Analog Devices ADM1177 Digital Power Monitor driver"
depends on I2C
Expand Down
1 change: 1 addition & 0 deletions drivers/iio/adc/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ obj-$(CONFIG_AD9467) += ad9467.o
obj-$(CONFIG_ADI_AXI_ADC) += adi-axi-adc.o
obj-$(CONFIG_AD9963) += ad9963.o
obj-$(CONFIG_ADAQ8092) += adaq8092.o
obj-$(CONFIG_ADA4355) += ada4355.o
obj-$(CONFIG_ADM1177) += adm1177.o

cf_axi_adc-y := cf_axi_adc_core.o
Expand Down
Loading
Loading