cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Adventurer
Adventurer
356 Views
Registered: ‎01-01-2019

axi iic device tree node - interrupt

Hi,

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)

2019-07-02_173636.png

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 (https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841974/Linux+I2C+Driver), 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?

Thanks.

0 Kudos