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/DS90UB948-Q1: I2C configuration

Part Number: DS90UB948-Q1

Tool/software: Linux

Hello everyone,

I have a DS90UB948 deserializer and I would like to configure it as passthrough so he can detect my MCU but it's not detected.

I have a TI serializer based on DS90UB949. The two address are correctly detected by i2cdetect.

What I've done with my Linux, from the documentation : www.ti.com/.../ds90ub948-q1.pdf

I tried these commands : > i2cset -f -y -m 0x08 0x2c 1 0x0c 0x03 0x08 and > i2cset -f -y -m 0x80 0x2c 1 0x0c 0x05 0x80

But still cannot find my MCU behind the deserializer.

What solution do you have ? Where is my mistake ?

  • Hi Pierre,

    Could you describe your setup in more details? How is your MCU connected? Could you provide any schematics or block diagrams?

    Best,
    Jiashow
  • Hello Jiashow,

    Thank you for your answer.
    It's quite simple : I have a Qualcomm Board with a DS90UB948 serializer connected to a screen through LVDS and i2c on the backchannel. The screen has a deserializer DS90UB948 which is connected to the MCU in i2c.

    With i2cdetect command, I can't detect the MCU even after I set the passthrough to "enable" mode to the deserializer.

    I don't really understand why ..

    Thanks a lot again

  • Hi Pierre,

    Have you tried setting your slave ID and your slave alias ID? Can you probe the I2C pins on the deserializer to check if the correct signals are going through?

    Best,
    Jiashow
  • Hello Jiashow,

    I just tried to set the slave ID and a slave alias ID (I tried with slaveID 0 and slave alias 0) but still nothing detected...
    Maybe I have a problem with the MCU.
    Should I need to reset after doing some modifications on the i2c register.

    Here are my commands :
    slave id 0: i2cset -y -m 0xFE 1 0x2c 0x08 0xA0
    slave alias id 0 : i2cset -y -m 0xFE 1 0x2c 0x10 0xA0

    slave id 1: i2cset -y -m 0xFE 1 0x2c 0x09 0xA0
    slave alias id 1 : i2cset -y -m 0xFE 1 0x2c 0x11 0xA0

    Reset : i2cset -y -m 0x01 1 0x2c 0x01 0x01

    Is that correct ?
  • Hi Pierre,

    You do not need to reset after the modifications.

    I typically set the registers this way: sudo i2cset <bus> <device address> <register address> <value>

    The device address should be your 948 address. Try setting reg 0x08 to your MCU address and reg 0x10 to your MCU alias address.

    Keep in mind that the addresses shown on the 948 are 7-bit addresses, typically on a Linux machine the addresses are 8-bit. If your 948 address is 0x2C, you may need to use 0x58 instead. One way to check this is to do i2cdetect to see what the Linux machine is really seeing.

    Best,
    Jiashow
  • Hello Jiashow,

    Thank you so much for your answer and your hint.

    In fact, I solved the issue by setting the SERIALIZER's passthrough to enable... It seems that the serializer will configure the deserializer correctly after doing that.

    I was able to see everything then... So easy.

    This is the only command I did : i2cset -y -f -m 0x80 1 0x0C 0x17 0x80

    Thanks again

  • Hi Pierre,

    Thanks for sharing your solution! I'm glad you were able to get it to work.

    Best,
    Jiashow