Showing results for 
Search instead for 
Did you mean: 
Registered: ‎01-01-2019

axi iic device tree node - interrupt


Based on the Zynq UltraScale+ MPSoC version, I have a problem in device tree node of axi i2c.

My design in PL side is as follows (schematic diagram, not complete)


axi i2c's iic2intc_irpt connect to gpio_axi_1_gpio_concat ln0[0:0], and dout[13:0] connect to axi gpio gpio_io_i[13:0].

axi gpio's ip2intc_irpt connect to xlconcat_0 ln4[0:0], and finally, dout[4:0] connect to zynq_ultra_ps_e_0's pls_ps_irq[4:0].

After export hdf, i use xsdk to generate device tree, my device tree about axi i2c is:


amba_pl@0 {
    i2c@80010000 {
	#address-cells = <0x1>;
	#size-cells = <0x0>;
	clocks = <0x34>;
	compatible = "xlnx,xps-iic-2.00.a";
	reg = <0x0 0x80010000 0x0 0x1000>;

This device tree will cause the Linux kernel to fail to execute the xiic_i2c_probe (i2c-xiic.c) correctly, as it will try to get the interrupt in the device tree.



static int xiic_i2c_probe(struct platform_device *pdev)
    irq = platform_get_irq(pdev, 0);
	if (irq < 0)
		return irq;

I look at the information on the wiki (, it seems that the device tree node of axi i2c needs to fill in the interrupt-related information.


My question is:

  1. Why xsdk does not generate the correct device tree?
  2. How do I modify the device tree to work properly?


0 Kudos