• 0
djc678

can't access I2C through Linux Kernel on Zedboard

Question

Hi,

I am relatively new to working with the Zedboard.

I've managed to get an I2C/I2S audio example working (using bare-metal) , that i've downloaded from here.
http://www.zynqbook.com/download-tuts.html

Now, I would like to get the same example working using the Linux Kernel.
However, I can't seem to be able to access the I2C bus.
The bus appears to be there, but denies access.

zynq> i2cdetect -l
i2c-0   i2c             Cadence I2C at e0004000                 I2C adapter

zynq> i2cdetect -y 0
Error: Can't use SMBus Quick Write command on this bus

From looking at the SDK, the I2C appears to be at 0xe0004000


Has any one got any suggestions, or point me in the right direction to find the correct settings..?
Everywhere I have googled seem to provide i2c solutions for different boards, or bespoke platform setups.

What I don't understand is why it just doesn't work "out-of-the-box" with the default settings.
Or perhaps, i have missed something.

I am using Xilinx SDK 2018.3, and the Xilinx kernel 

My kernel settings are these:

CONFIG_REGMAP_I2C=y
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
CONFIG_I2C_COMPAT=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MUX=y
CONFIG_I2C_MUX_PCA954x=y
CONFIG_I2C_HELPER_AUTO=y
CONFIG_I2C_ALGOBIT=y
CONFIG_I2C_CADENCE=y
CONFIG_VIDEO_IR_I2C=y
CONFIG_SND_SOC_I2C_AND_SPI=y
CONFIG_RTC_I2C_AND_SPI=y

My device tree looks like this:

i2c@e0004000 {
    compatible = "cdns,i2c-r1p10";
    clocks = <0x1 0x26>;
    interrupt-parent = <0x4>;
    /*interrupts = <0x0 0x25 0x4>;*/
    interrupts = <0x0 0x19 0x4>;
    reg = <0xe0004000 0x1000>;
    i2c-clk = <0x61a80>;
    #address-cells = <0x1>;
    #size-cells = <0x0>;
};

The default device tree entry for i2c was disabled, so i've tried different combinations.

Any help would be gratefully received

Dave

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Hi @djc678,

Welcome to the digilent forum!

I have moved this thread to a sub-section where more experienced embedded linux engineers look.

best regards,

Jon

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now