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: Setting SER_ALIAS_ID (Address 0x5C) + Enabling PG

Part Number: DS90UB954-Q1

Hello,

I am trying to bring up TI 954 with 913. We already brought up 913 with 914 so, 913 camera should be OK.

I can read write other registers but somehow 0x5C cannot be written. Anyone knows why ?

E.g. I can modify 0x0c below (I2C address for 954 is 0x38)

root@computing# echo 38 0c > i2c_reg_value ; cat i2c_reg_value
I2C read OK: id = 0x38, addr = 0xc, data = 0x83

root@computing# echo 38 0c 80 > i2c_reg_value ; cat i2c_reg_value
I2C read OK: id = 0x38, addr = 0xc, data = 0x80

However I cannot modify 0x5C

root@computing# echo 3a 5c > i2c_reg_value ; cat i2c_reg_value
I2C read OK: id = 0x3a, addr = 0x5c, data = 0x0

root@computing# echo 3a 5c aa > i2c_reg_value ; cat i2c_reg_value
I2C read OK: id = 0x3a, addr = 0x5c, data = 0x0

root@computing# echo 3a 5c > i2c_reg_value ; cat i2c_reg_value 
I2C read OK: id = 0x3a, addr = 0x5c, data = 0x0

Once I verify this I2C back channel access, I want to enable pattern gen and see how my FPGA is getting the MIPI video stream.

If anyone has steps to try pattern generator, please share with me.

FYI, I dumped some register reading below.

I2C read OK: id = 0x38, addr = 0x0, data = 0x70

I2C read OK: id = 0x38, addr = 0x1, data = 0x0

I2C read OK: id = 0x38, addr = 0x2, data = 0x1e

I2C read OK: id = 0x38, addr = 0x3, data = 0x20

I2C read OK: id = 0x38, addr = 0x4, data = 0xdf

I2C read OK: id = 0x38, addr = 0x5, data = 0x1

I2C read OK: id = 0x38, addr = 0x6, data = 0x0

I2C read OK: id = 0x38, addr = 0x7, data = 0xfe

I2C read OK: id = 0x38, addr = 0x8, data = 0x1c

I2C read OK: id = 0x38, addr = 0x9, data = 0x10

I2C read OK: id = 0x38, addr = 0xa, data = 0x7a

I2C read OK: id = 0x38, addr = 0xb, data = 0x7a

I2C read OK: id = 0x38, addr = 0xc, data = 0x83

I2C read OK: id = 0x38, addr = 0xd, data = 0x9

I2C read OK: id = 0x38, addr = 0xe, data = 0x12

I2C read OK: id = 0x38, addr = 0xf, data = 0x7f

 

I2C read OK: id = 0x38, addr = 0x10, data = 0x0

I2C read OK: id = 0x38, addr = 0x11, data = 0x0

I2C read OK: id = 0x38, addr = 0x12, data = 0x0

I2C read OK: id = 0x38, addr = 0x13, data = 0x0

I2C read OK: id = 0x38, addr = 0x14, data = 0x0

I2C read OK: id = 0x38, addr = 0x15, data = 0x0

I2C read OK: id = 0x38, addr = 0x16, data = 0x0

I2C read OK: id = 0x38, addr = 0x17, data = 0x0

I2C read OK: id = 0x38, addr = 0x18, data = 0x43

I2C read OK: id = 0x38, addr = 0x19, data = 0x0

I2C read OK: id = 0x38, addr = 0x1a, data = 0x0

I2C read OK: id = 0x38, addr = 0x1b, data = 0x0

I2C read OK: id = 0x38, addr = 0x1c, data = 0x0

I2C read OK: id = 0x38, addr = 0x1d, data = 0x0

I2C read OK: id = 0x38, addr = 0x1e, data = 0x4

I2C read OK: id = 0x38, addr = 0x1f, data = 0x2

 

I2C read OK: id = 0x38, addr = 0x20, data = 0x0

I2C read OK: id = 0x38, addr = 0x21, data = 0x1

I2C read OK: id = 0x38, addr = 0x22, data = 0x0

I2C read OK: id = 0x38, addr = 0x23, data = 0x0

I2C read OK: id = 0x38, addr = 0x24, data = 0x0

I2C read OK: id = 0x38, addr = 0x25, data = 0x0

I2C read OK: id = 0x38, addr = 0x26, data = 0x0

I2C read OK: id = 0x38, addr = 0x27, data = 0x0

I2C read OK: id = 0x38, addr = 0x28, data = 0x0

I2C read OK: id = 0x38, addr = 0x29, data = 0x0

I2C read OK: id = 0x38, addr = 0x2a, data = 0x0

I2C read OK: id = 0x38, addr = 0x2b, data = 0x0

I2C read OK: id = 0x38, addr = 0x2c, data = 0x0

I2C read OK: id = 0x38, addr = 0x2d, data = 0x0

I2C read OK: id = 0x38, addr = 0x2e, data = 0x0

I2C read OK: id = 0x38, addr = 0x2f, data = 0x0

 

I2C read OK: id = 0x38, addr = 0x30, data = 0x0

I2C read OK: id = 0x38, addr = 0x31, data = 0x0

I2C read OK: id = 0x38, addr = 0x32, data = 0x0

I2C read OK: id = 0x38, addr = 0x33, data = 0x1

I2C read OK: id = 0x38, addr = 0x34, data = 0x40

I2C read OK: id = 0x38, addr = 0x35, data = 0x0

I2C read OK: id = 0x38, addr = 0x36, data = 0x0

I2C read OK: id = 0x38, addr = 0x37, data = 0x3

I2C read OK: id = 0x38, addr = 0x38, data = 0x0

I2C read OK: id = 0x38, addr = 0x39, data = 0x0

I2C read OK: id = 0x38, addr = 0x3a, data = 0x0

I2C read OK: id = 0x38, addr = 0x3b, data = 0x1

I2C read OK: id = 0x38, addr = 0x3c, data = 0x14

I2C read OK: id = 0x38, addr = 0x3d, data = 0x6f

I2C read OK: id = 0x38, addr = 0x3e, data = 0x0

I2C read OK: id = 0x38, addr = 0x3f, data = 0x40

 

I2C read OK: id = 0x38, addr = 0x40, data = 0x0

I2C read OK: id = 0x38, addr = 0x41, data = 0xa7

I2C read OK: id = 0x38, addr = 0x42, data = 0x71

I2C read OK: id = 0x38, addr = 0x43, data = 0x1

I2C read OK: id = 0x38, addr = 0x44, data = 0x0

I2C read OK: id = 0x38, addr = 0x45, data = 0x0

I2C read OK: id = 0x38, addr = 0x46, data = 0x0

I2C read OK: id = 0x38, addr = 0x47, data = 0x0

I2C read OK: id = 0x38, addr = 0x48, data = 0x0

I2C read OK: id = 0x38, addr = 0x49, data = 0x0

I2C read OK: id = 0x38, addr = 0x4a, data = 0x0

I2C read OK: id = 0x38, addr = 0x4b, data = 0x12

I2C read OK: id = 0x38, addr = 0x4c, data = 0x0

I2C read OK: id = 0x38, addr = 0x4d, data = 0x17

I2C read OK: id = 0x38, addr = 0x4e, data = 0xfd

I2C read OK: id = 0x38, addr = 0x4f, data = 0x18

 

I2C read OK: id = 0x38, addr = 0x50, data = 0xfd

I2C read OK: id = 0x38, addr = 0x51, data = 0x0

I2C read OK: id = 0x38, addr = 0x52, data = 0x0

I2C read OK: id = 0x38, addr = 0x53, data = 0x0

I2C read OK: id = 0x38, addr = 0x54, data = 0x0

I2C read OK: id = 0x38, addr = 0x55, data = 0xff

I2C read OK: id = 0x38, addr = 0x56, data = 0xff

I2C read OK: id = 0x38, addr = 0x57, data = 0x0

I2C read OK: id = 0x38, addr = 0x58, data = 0x1e

I2C read OK: id = 0x38, addr = 0x59, data = 0x0

I2C read OK: id = 0x38, addr = 0x5a, data = 0x0

I2C read OK: id = 0x38, addr = 0x5b, data = 0xb0

I2C read OK: id = 0x38, addr = 0x5c, data = 0x0

I2C read OK: id = 0x38, addr = 0x5d, data = 0x0

I2C read OK: id = 0x38, addr = 0x5e, data = 0x0

I2C read OK: id = 0x38, addr = 0x5f, data = 0x0

 

I2C read OK: id = 0x38, addr = 0x60, data = 0x0

I2C read OK: id = 0x38, addr = 0x61, data = 0x0

I2C read OK: id = 0x38, addr = 0x62, data = 0x0

I2C read OK: id = 0x38, addr = 0x63, data = 0x0

I2C read OK: id = 0x38, addr = 0x64, data = 0x0

I2C read OK: id = 0x38, addr = 0x65, data = 0x0

I2C read OK: id = 0x38, addr = 0x66, data = 0x0

I2C read OK: id = 0x38, addr = 0x67, data = 0x0

I2C read OK: id = 0x38, addr = 0x68, data = 0x0

I2C read OK: id = 0x38, addr = 0x69, data = 0x0

I2C read OK: id = 0x38, addr = 0x6a, data = 0x0

I2C read OK: id = 0x38, addr = 0x6b, data = 0x0

I2C read OK: id = 0x38, addr = 0x6c, data = 0x0

I2C read OK: id = 0x38, addr = 0x6d, data = 0x7c

I2C read OK: id = 0x38, addr = 0x6e, data = 0x88

I2C read OK: id = 0x38, addr = 0x6f, data = 0x88

 

I2C read OK: id = 0x38, addr = 0x70, data = 0x2b

I2C read OK: id = 0x38, addr = 0x71, data = 0x2c

I2C read OK: id = 0x38, addr = 0x72, data = 0xe4

I2C read OK: id = 0x38, addr = 0x73, data = 0x0

I2C read OK: id = 0x38, addr = 0x74, data = 0x6

I2C read OK: id = 0x38, addr = 0x75, data = 0x81

I2C read OK: id = 0x38, addr = 0x76, data = 0xfa

I2C read OK: id = 0x38, addr = 0x77, data = 0xc5

I2C read OK: id = 0x38, addr = 0x78, data = 0x0

I2C read OK: id = 0x38, addr = 0x79, data = 0x1

I2C read OK: id = 0x38, addr = 0x7a, data = 0xf

I2C read OK: id = 0x38, addr = 0x7b, data = 0xff

I2C read OK: id = 0x38, addr = 0x7c, data = 0x20

I2C read OK: id = 0x38, addr = 0x7d, data = 0x0

I2C read OK: id = 0x38, addr = 0x7e, data = 0x0

I2C read OK: id = 0x38, addr = 0x7f, data = 0x0

  • Kwan,

    Register 0x5C is reserved for the Serializer Alias ID value - Is your question that you have trouble writing the Alias ID value of the 913 to Register 0x5C?

    When setting up your script,
    Be sure to enable the correct port for read and write on the 954 (Register 0x4C)
    Set up the Back Channel Config (Register 0x58)
    Set up the Serializer ID (Register 0x5B)
    Set up Serializer Alias ID (Register 0x5C)
    Set up Slave camera ID (Register 0x5D)
    Set up Slave camera Alias ID (Register 0x65)

    Regards,
    Jonny
  • Kwan,

    In regards to setting up the PatGen for the 954, please refer to the comments in this E2E thread: e2e.ti.com/.../671813

    There is some example code in the comments that shows how to set up the Pattern Generation.

    Regards,
    Jonny
  • Hi, Jonny

    Thanks for your reply.

    1) Pattern Generation now works.

    I do receive below pattern. I guess this is expected pattern.

    Still more questions on pattern generation. 

    1-a) I play with CSI_PLL_CTL and for both 1.6G and 800Mbps settings, I get same pattern from FPGA side. Does it make sense to you ?

    1-b) FPGA side is configured as YUV 422. Does it have any meaning ? I guess test pattern just generate fixed pattern and FPGA receive it ? Then even for real case, for data receiving, FPGA color setting has no meaning ?

    2) For back channel I2C access, it still doesn't work. (Eventually I want to make sure camera gets triggered but for now, I am focusing on back channel I2C work to make sure, the communication between 913 and 954 are good.) Below is register dump. Could you check it and let me know what is not right ? I did set the registered you mentioned. 

    Register 0x04 value 0xdf below means 913 and 954 are connected ?

    I2C read OK: id = 0x38, addr = 0x0, data = 0x70
    I2C read OK: id = 0x38, addr = 0x1, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2, data = 0x1e
    I2C read OK: id = 0x38, addr = 0x3, data = 0x20
    I2C read OK: id = 0x38, addr = 0x4, data = 0xdf
    I2C read OK: id = 0x38, addr = 0x5, data = 0x1
    I2C read OK: id = 0x38, addr = 0x6, data = 0x0
    I2C read OK: id = 0x38, addr = 0x7, data = 0xfe
    I2C read OK: id = 0x38, addr = 0x8, data = 0x1c
    I2C read OK: id = 0x38, addr = 0x9, data = 0x10
    I2C read OK: id = 0x38, addr = 0xa, data = 0x7a
    I2C read OK: id = 0x38, addr = 0xb, data = 0x7a
    I2C read OK: id = 0x38, addr = 0xc, data = 0x83
    I2C read OK: id = 0x38, addr = 0xd, data = 0x9
    I2C read OK: id = 0x38, addr = 0xe, data = 0x30
    I2C read OK: id = 0x38, addr = 0xf, data = 0x7f

    I2C read OK: id = 0x38, addr = 0x10, data = 0x0
    I2C read OK: id = 0x38, addr = 0x11, data = 0x0
    I2C read OK: id = 0x38, addr = 0x12, data = 0x0
    I2C read OK: id = 0x38, addr = 0x13, data = 0x0
    I2C read OK: id = 0x38, addr = 0x14, data = 0x0
    I2C read OK: id = 0x38, addr = 0x15, data = 0x0
    I2C read OK: id = 0x38, addr = 0x16, data = 0x0
    I2C read OK: id = 0x38, addr = 0x17, data = 0x0
    I2C read OK: id = 0x38, addr = 0x18, data = 0x81
    I2C read OK: id = 0x38, addr = 0x19, data = 0x0
    I2C read OK: id = 0x38, addr = 0x1a, data = 0x0
    I2C read OK: id = 0x38, addr = 0x1b, data = 0x0
    I2C read OK: id = 0x38, addr = 0x1c, data = 0x0
    I2C read OK: id = 0x38, addr = 0x1d, data = 0x0
    I2C read OK: id = 0x38, addr = 0x1e, data = 0x4
    I2C read OK: id = 0x38, addr = 0x1f, data = 0x2

    I2C read OK: id = 0x38, addr = 0x20, data = 0x0
    I2C read OK: id = 0x38, addr = 0x21, data = 0x1
    I2C read OK: id = 0x38, addr = 0x22, data = 0x0
    I2C read OK: id = 0x38, addr = 0x23, data = 0x0
    I2C read OK: id = 0x38, addr = 0x24, data = 0x0
    I2C read OK: id = 0x38, addr = 0x25, data = 0x0
    I2C read OK: id = 0x38, addr = 0x26, data = 0x0
    I2C read OK: id = 0x38, addr = 0x27, data = 0x0
    I2C read OK: id = 0x38, addr = 0x28, data = 0x0
    I2C read OK: id = 0x38, addr = 0x29, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2a, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2b, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2c, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2d, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2e, data = 0x0
    I2C read OK: id = 0x38, addr = 0x2f, data = 0x0

    I2C read OK: id = 0x38, addr = 0x30, data = 0x0
    I2C read OK: id = 0x38, addr = 0x31, data = 0x0
    I2C read OK: id = 0x38, addr = 0x32, data = 0x0
    I2C read OK: id = 0x38, addr = 0x33, data = 0x3
    I2C read OK: id = 0x38, addr = 0x34, data = 0x40
    I2C read OK: id = 0x38, addr = 0x35, data = 0x0
    I2C read OK: id = 0x38, addr = 0x36, data = 0x0
    I2C read OK: id = 0x38, addr = 0x37, data = 0x0
    I2C read OK: id = 0x38, addr = 0x38, data = 0x0
    I2C read OK: id = 0x38, addr = 0x39, data = 0x0
    I2C read OK: id = 0x38, addr = 0x3a, data = 0x0
    I2C read OK: id = 0x38, addr = 0x3b, data = 0x1
    I2C read OK: id = 0x38, addr = 0x3c, data = 0x14
    I2C read OK: id = 0x38, addr = 0x3d, data = 0x6f
    I2C read OK: id = 0x38, addr = 0x3e, data = 0x0
    I2C read OK: id = 0x38, addr = 0x3f, data = 0x40

    I2C read OK: id = 0x38, addr = 0x40, data = 0x0
    I2C read OK: id = 0x38, addr = 0x41, data = 0xa7
    I2C read OK: id = 0x38, addr = 0x42, data = 0x71
    I2C read OK: id = 0x38, addr = 0x43, data = 0x1
    I2C read OK: id = 0x38, addr = 0x44, data = 0x0
    I2C read OK: id = 0x38, addr = 0x45, data = 0x0
    I2C read OK: id = 0x38, addr = 0x46, data = 0x0
    I2C read OK: id = 0x38, addr = 0x47, data = 0x0
    I2C read OK: id = 0x38, addr = 0x48, data = 0x0
    I2C read OK: id = 0x38, addr = 0x49, data = 0x0
    I2C read OK: id = 0x38, addr = 0x4a, data = 0x0
    I2C read OK: id = 0x38, addr = 0x4b, data = 0x12
    I2C read OK: id = 0x38, addr = 0x4c, data = 0x13
    I2C read OK: id = 0x38, addr = 0x4d, data = 0x50
    I2C read OK: id = 0x38, addr = 0x4e, data = 0xcb
    I2C read OK: id = 0x38, addr = 0x4f, data = 0x0

    I2C read OK: id = 0x38, addr = 0x50, data = 0x0
    I2C read OK: id = 0x38, addr = 0x51, data = 0x0
    I2C read OK: id = 0x38, addr = 0x52, data = 0x0
    I2C read OK: id = 0x38, addr = 0x53, data = 0x0
    I2C read OK: id = 0x38, addr = 0x54, data = 0x0
    I2C read OK: id = 0x38, addr = 0x55, data = 0x0
    I2C read OK: id = 0x38, addr = 0x56, data = 0x0
    I2C read OK: id = 0x38, addr = 0x57, data = 0xff
    I2C read OK: id = 0x38, addr = 0x58, data = 0xf0
    I2C read OK: id = 0x38, addr = 0x59, data = 0x0
    I2C read OK: id = 0x38, addr = 0x5a, data = 0x0
    I2C read OK: id = 0x38, addr = 0x5b, data = 0xb0
    I2C read OK: id = 0x38, addr = 0x5c, data = 0xaa
    I2C read OK: id = 0x38, addr = 0x5d, data = 0x0
    I2C read OK: id = 0x38, addr = 0x5e, data = 0x0
    I2C read OK: id = 0x38, addr = 0x5f, data = 0x0

    I will be also happy if you can call me and do short interactive debugging.