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.

DS90UB954-Q1: remote serializer DS90UB953-Q1 is not accessible from DS90UB954-Q1 deserializer

Part Number: DS90UB954-Q1
Other Parts Discussed in Thread: DS90UB953-Q1, , ALP

Hello,

I am bringing up camera module which has DS90UB953-Q1 serializer and configured Mode strap pins in synchronous mode.

Deserializer configured as synchronous mode with back channel frequency 50 Mbps, serializer alias is set as 0x20 and I2C_PASS_THROUGH is also enabled.

LOCK_STS is established, but  serializer is not accessible over back channel.

Can you please suggest what could be issue here?

# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x4c
0x4c -> 0x01
# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x6d
0x6d -> 0x7c
# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x58
0x58 -> 0x5e
# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x4d
0x4d -> 0x05
# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x5b
0x5b -> 0x30
# /bin/camera/ccidbgr /dev/cci0 0x30 read 0x5c
0x5c -> 0x20
# /bin/camera/ccidbgr /dev/cci0 0x10 read 0x00
/bin/camera/ccidbgr: i2c_combined_writeread(/dev/cci0 = 3, slaveAddr = 0x10, 1, &data, 1) failed

  • Hi Ajay,

    Thanks for your inquiry. I'm a bit confused about the code which you provided, in which line are you reading or writing to device address 0x20? My understanding is the final line of code shows that there was a failure to read the device with address 0x10, however you mentioned that the serializer alias was set as 0x20.

    Best,

    Thomas

  • Hello Thomas,

    Thanks for response and carefully reading the register dumps.

     Serializer alias set as 0x20 into 0x5c considering {DS90UB954-Q1 datasheet, 7.6.84 SER_ALIAS_ID Register,  SER_ALIAS_ID [7:1] SER_AUTO_ACK[0] }

    So whenever we read serializer, considereing SER_ALIAS_ID[7:1] ( 0x10 = 0x20 >> 1), So I think in this case 0x10 should be correct slave address in order to access serializer. Please correct me if my understanding is not correct.

    Best Regards

    Ajay

  • Hi Ajay,

    Thanks for clarifying, it seems that you are correctly attempting to read from 7 bit address 0x10 which should be assigned to the serializer. One concern I have is that register 0x4D indicates that the pass criteria are not met, and there are FPD_III parity errors which have been identified. Do you know what option is selected for register 0x0C [5:4] (PASS_SEL)? It would also be helpful to know if you are using one DS90UB953 serializer or two, and which port it's connected to on the 954.

    Best,

    Thomas

  • Hello Thomas,

    what option is selected for register 0x0C [5:4] (PASS_SEL)

    [Ajay] I have used "10: Any Enabled Receiver Port Pass"

     It would also be helpful to know if you are using one DS90UB953 serializer or two, and which port it's connected to on the 954.

    [Ajay] I  am using only one  DS90UB953 serializer which connected to Rx Port0.

    Best Regards

    Ajay

  • Hi Ajay,

    Thanks for the additional information. Do you have the full script which you used to configure the 954 before reading back the registers shown above?

    Best,

    Thomas

  • Hello Thomas,

    I am not using script here, only setting the necessary registers here. like (Mode , back channel, alias_id)

    Best regards

    Ajay

  • Hello Ajay,

    Please tell us what register settings you are applying? Specifically what are you writing for the above settings? (mode, Back channel, alias, id, etc.)

    Best Regards,

    Casey 

  • Hello Casey, 

    We are writing below register and mode is strapped as follow.

    # /bin/camera/ccidbgr /dev/cci0 0x30 write 0x4c 0x01
    0x4c <- 0x01
    # /bin/camera/ccidbgr /dev/cci0 0x30 write 0x5c 0x20
    0x5c <- 0x20
    # /bin/camera/ccidbgr /dev/cci0 0x30 write 0x58 0x5e
    0x58 <- 0x5e
    # /bin/camera/ccidbgr /dev/cci0 0x30 read 0x4d
    0x4d -> 0x07
    # /bin/camera/ccidbgr /dev/cci0 0x30 read 0x6d
    0x6d -> 0x7c

    # /bin/camera/ccidbgr /dev/cci0 0x30 read 0x5b
    0x5b -> 0x30

    # /bin/camera/ccidbgr /dev/cci0 0x10 read 0x00
    /bin/camera/ccidbgr: i2c_combined_writeread(/dev/cci0 = 3, slaveAddr = 0x10, 1, &data, 1) failed

  • Hi Ajay,

    Let me take a look at this on our evaluation boards tomorrow in the lab and get back to you with anything I find.

    Best,

    Thomas

  • Hi Ajay,

    Thanks for your patience on this case. I was able to test this in the lab today and found that I needed to write to the 8 bit serializer alias (0x20 in your case) in our ALP scripting environment to access the serializer. Could you try to access the serializer through the 8 bit equivalent address in your serializer read?

    Best,

    Thomas

  • Hello Thomas,

    I see same issue while reading 8 bit address too!

    # /bin/camera/ccidbgr /dev/cci0 0x20 read 0x00
    /bin/camera/ccidbgr: i2c_combined_writeread(/dev/cci0 = 3, slaveAddr = 0x20, 1, &data, 1) failed

    Best Regards

    Ajay

  • Hi Ajay,

    Would it be possible to capture the transactions on the local I2C bus and send them to me? We normally use saleae logic analyzers to capture I2C transactions like this, could you try to do something similar?

    Best,

    Thomas