This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Linux/TCA6408A: TCA6408A device can't found

Part Number: TCA6408A
Other Parts Discussed in Thread: TCA6408

Tool/software: Linux

I'm using the AM335X-EVM board with the linux SDK. The expand I/O use two TCA6408A.

I have checked the kernel config "tisdk_am335x-evm_defconfig"


So the driver have be added into the kernel.

And the PCA953X driver can also support TCA6498

{ .compatible = "ti,tca6408", .data = OF_953X( 8, PCA_INT), },

Then I have changed the device tree with

&i2c0 {
pinctrl-names = "default";
pinctrl-0 = <&i2c0_pins>;

status = "okay";
clock-frequency = <100000>;

tps: tps@2d {
reg = <0x2d>;

tca6408: tca6408@20 {
compatible = "tca6408";
reg = <0x20>;

When I check the node, it has been added.

root@am335x-evm:/sys/bus/i2c/devices# ls
0-0020 0-002d 1-0018 1-001b 1-0039 1-0048 i2c-0 i2c-1

But I can't find the device under /dev. I tried to compile the pca95x.c to pca953x.ko and insmod this modules but it said that it had been registered...

So what's wrong with my operations? How can I correct it?

  • Hey Yan,

    Unfortunately we do not provide software support for our I2C devices.

    I can try to help you if you are seeing an analog issue. Correct me if I am wrong but it seems you may not be seeing an ACK on the SDA line for the TCA6408A. It may be helpful for us to look at the I2C lines on an o-scope and try to debug there.



  • Dear  Bobby,

    Thanks for your answer.

    I have solved this problem. First, the TCA6408A is connected to I2C1, but I wrote it on I2C0 bus. And the driver had generated it into a GPIO device-“gpiochip6”.

    Anyway, thanks again!