Hi all,
I implemented the AXI I2C controller on the PL of a MicroZed as described in tutorial 9. After generating the bitfile and putting it in BOOT.bin, I also updated by device tree with the pl.dtsi from the SDK:
/ {
amba_pl: amba_pl {
#address-cells = <1>;
#size-cells = <1>;
compatible = "simple-bus";
ranges ;
axi_iic_0: i2c@41600000 {
#address-cells = <1>;
#size-cells = <0>;
clock-names = "s_axi_aclk";
clocks = <&clkc 15>;
compatible = "xlnx,axi-iic-2.0", "xlnx,xps-iic-2.00.a";
reg = <0x41600000 0x10000>;
};
};
};
I then reconfigured the kernel, removed the Cadence I2C driver, and added the Xilinx I2C driver (note: as static drivers, not modules). I built the kernel and made a new image.ub, then fired it up. There are no /dev/i2c-* nodes. My dmesg only contains the following:
# dmesg | grep -i i2c
[ 0.269877] i2c-core: driver [dummy] registered
[ 0.511568] i2c-core: driver [si570] registered
[ 0.543153] i2c-core: driver [at24] registered
[ 0.887084] i2c-core: driver [rtc-m41t80] registered
[ 0.887129] i2c-core: driver [rtc-pcf8563] registered
[ 0.887135] i2c /dev entries driver
[ 0.889516] i2c-core: driver [pca954x] registered
[ 0.889570] i2c-core: driver [adv7604] registered
[ 0.889620] i2c-core: driver [ir-kbd-i2c] registered
[ 0.921732] i2c-core: driver [pmbus] registered
[ 0.921779] i2c-core: driver [ucd9000] registered
[ 0.921830] i2c-core: driver [ucd9200] registered
But no i2c bus was actually found. Does anything look weird here? The axi_iic_0 node of the device tree doesn't have any interrupt properties in it, which I find suspicious, but there are probably other issues.
Thoughts? Thanks!