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/TCA9546A: I2c driver compatible PCA9544A

Part Number: TCA9546A
Other Parts Discussed in Thread: PCA9544A, PCA9546A

Tool/software: Linux

Hi all,

We are currently changing from ti,PCA9544A to TCA9546A and we have some trouble with Linux driver.

There is no input for ti,tca9546a compatibility inside linux sources, maybe ti has a custom driver ?

For info the device is probed as a PCA9544A but there are a little control difference. 

I would like to know if someone here has already try NXP driver with Ti, PCA9546A ?

I you have any info about that, feel free to share I'm stuck ..

Cheers,

Nicolas.

  • Hey Nicolas,

    "We are currently changing from ti,PCA9544A to TCA9546A and we have some trouble with Linux driver."
    -I assume the drivers for 9544 and 9546 should be similar and work though I should point out that PCA9544A is a MUX and can only turn on one channel at a time while TCA9546A is a switch and can have multiple channels enabled at a time. This could be the difference that is causing issues.

    "There is no input for ti,tca9546a compatibility inside linux sources, maybe ti has a custom driver ?"
    -Unfortunately we do not.

    "I would like to know if someone here has already try NXP driver with Ti, PCA9546A ?"
    Looking at the datasheet of the two, the way you control NXP's and TI's 9546A look to be the same so on the software side if it works for NXP's 9546A then the same driver should also work for TI's TCA9546A.
    I would suggest trying the PCA9546A drivers with our TCA9546A as I believe it should be compatible.

    Thanks,
    -Bobby

  • Hi Bobby,

    First thank you for reply!

    "I would suggest trying the PCA9546A drivers with our TCA9546A as I believe it should be compatible."

    --> Short answer : Is not :-(

    You are right: In fact when we select cam0 for example with NXP component, the cam1 will be selected with TI component...

    If you take a look to the datasheet, control register is not the same and the truth table is not the same.

    Cheers,

    Nicolas

  • Hey Nicolas,

    Just for clarification:

    "If you take a look to the datasheet, control register is not the same and the truth table is not the same."

    Are we comparing TCA9546A and PCA9546A (NXP)?

    TI                                                                                                  NXP

    Slave address and control register look to be the same above for TCA/PCA9546A

    TI                                                                                                       NXP

    Truth table looks to be the same. This leads me to believe that the driver for NXP's PCA9546A should work with TCA9546A as well.

    -Bobby

  • Hi Bobby,

    Thanks a lot for your investigation but I think there is a misunderstanding.

    In previous hardware version the component used was a NXP PCA9544A, everything works great with a generic driver.

    In the current version the component was replaced by a TI TCA9546A and the control looks different.

    NXP PCA9544A


    TI TCA9546A


    So you are right, but we have to use TCA9546A...

    Thank you again for you time.

    Cheers,

    Nicolas

     

  • Hey Nicolas,

    Thanks for clarifying.

    I did a quick search on google for a linux driver for PCA9546 and found this:

    Line 76 of the code seems to differentiate between a switch and a mux (mux being the 9544 and switch being 9546) and line 131 states it will be set as a switch configuration.

    I assume this will work but software/coding is outside of my area of expertise here.

    Thanks,

    -Bobby

  • Hi Bobby,

    Thank you ! I have founded the trouble. With my old kernel (4.6) the driver is not clean and doesn't work correctly...
    I made a patch from 4.14 and all works now.

    Thank you again for you time !!

    Cheers,
    Nicolas