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.

DLPC6401 failed to select LVDS source inpu

Other Parts Discussed in Thread: DLPC6401
When we tried to select the LVDS source, the Port number setting can't work. 
From the spec, the Port-2  is LVDS. We send the I2C command "0x34, 0x84, 0x80", and read the value of register 0x04 back. It always be 0x0.
Could anyone help to solve this issue?
Hereunder is our test log, FYI.
==========================================================
[  162.356325] [DLPC INFO:]dlpc_i2c_write, addr = 0x0, buf = 0xdcabbe95, len = 0x1
[  162.364557] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  162.373448] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.378759] sunxi_i2c_do_xfer()919 - data = 0x80 
[  162.383991] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.389302] sunxi_i2c_do_xfer()919 - data = 0x3 
[  162.394431] sunxi_i2c_do_xfer()921 -                                                              <-- Write CMD: 0x34 0x80 0x03
[  162.394434] 
[  162.406660] [DLPC INFO:]dlpc_i2c_write success
[  162.511608] [DLPC INFO:]dlpc_i2c_read, addr = 0x0
[  162.516927] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  162.525817] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.531138] sunxi_i2c_do_xfer()919 - data = 0x0 
[  162.536256] sunxi_i2c_do_xfer()921 -                                                              <-- READ CMD: 0x34 0x00
[  162.536259] 
[  162.546266] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  162.555158] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.560479] sunxi_i2c_do_xfer()919 - data = 0xee 
[  162.565694] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.571015] sunxi_i2c_do_xfer()919 - data = 0xee 
[  162.576229] sunxi_i2c_do_xfer()921 - 
[  162.576231] 
[  162.587359] [DLPC INFO:]dlpc_i2c_read success
[  162.592204] [DLPC INFO:]dlpc_select_lvds_source, addr = 0x0, val = 0x3!    <-- READ Value
[  162.804049] [DLPC INFO:]dlpc_i2c_write, addr = 0x5, buf = 0xdcabbe95, len = 0x1
[  162.812272] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  162.821162] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.826474] sunxi_i2c_do_xfer()919 - data = 0x85 
[  162.831700] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.837011] sunxi_i2c_do_xfer()919 - data = 0x40 
[  162.842235] sunxi_i2c_do_xfer()921 -                                                              <-- Write CMD: 0x34 0x85 0x40 
[  162.842238] 
[  162.854589] [DLPC INFO:]dlpc_i2c_write success
[  162.964033] [DLPC INFO:]dlpc_i2c_read, addr = 0x5
[  162.969363] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  162.978255] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  162.983600] sunxi_i2c_do_xfer()919 - data = 0x5 
[  162.988719] sunxi_i2c_do_xfer()921 -                                                              <-- Read CMD: 0x34 0x05
[  162.988722] 
[  162.997200] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.006094] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.011417] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.016632] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.021953] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.027168] sunxi_i2c_do_xfer()921 - 
[  163.027171] 
[  163.035438] [DLPC INFO:]dlpc_i2c_read success
[  163.040303] [DLPC INFO:]dlpc_select_lvds_source, addr = 0x5, val = 0x40!    <-- READ Value
[  163.252024] [DLPC INFO:]dlpc_i2c_write, addr = 0x17, buf = 0xdcabbe95, len = 0x1
[  163.260386] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.269265] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.274587] sunxi_i2c_do_xfer()919 - data = 0x97 
[  163.279802] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.285146] sunxi_i2c_do_xfer()919 - data = 0x1 
[  163.290276] sunxi_i2c_do_xfer()921 -                                                              <-- Write CMD: 0x34 0x97 0x1 
[  163.290279] 
[  163.302545] [DLPC INFO:]dlpc_i2c_write success
[  163.407473] [DLPC INFO:]dlpc_i2c_read, addr = 0x17
[  163.412899] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.421788] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.427099] sunxi_i2c_do_xfer()919 - data = 0x17 
[  163.432324] sunxi_i2c_do_xfer()921 -                                                              <-- Read CMD: 0x34 0x17 
[  163.432327] 
[  163.440819] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.449698] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.455026] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.460253] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.465564] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.470789] sunxi_i2c_do_xfer()921 - 
[  163.470792] 
[  163.479096] [DLPC INFO:]dlpc_i2c_read success
[  163.483955] [DLPC INFO:]dlpc_select_lvds_source, addr = 0x17, val = 0x1!    <-- READ Value
[  163.491400] [DLPC INFO:]dlpc_i2c_write, addr = 0x4, buf = 0xdcabbe95, len = 0x1
[  163.499612] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.508500] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.518825] sunxi_i2c_do_xfer()919 - data = 0x84 
[  163.524050] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.529360] sunxi_i2c_do_xfer()919 - data = 0x80 
[  163.534586] sunxi_i2c_do_xfer()921 -                                                              <-- Write CMD: 0x34 0x84 0x80
[  163.534589] 
[  163.546898] [DLPC INFO:]dlpc_i2c_write success
[  163.751839] [DLPC INFO:]dlpc_i2c_read, addr = 0x4
[  163.757158] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.766078] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.771403] sunxi_i2c_do_xfer()919 - data = 0x4 
[  163.776521] sunxi_i2c_do_xfer()921 -                                                              <-- Read CMD: 0x34 0x04 
[  163.776523] 
[  163.784904] sunxi_i2c_do_xfer()915 - Sunxi I2C bus 0x0 transfer, base_addr = 0xf1c2ac00
[  163.793796] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.799107] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.804332] sunxi_i2c_do_xfer()918 - baddr = 0x1a 
[  163.809643] sunxi_i2c_do_xfer()919 - data = 0xee 
[  163.819871] sunxi_i2c_do_xfer()921 - 
[  163.819874] 
[  163.828144] [DLPC INFO:]dlpc_i2c_read success
[  163.832987] [DLPC INFO:]dlpc_select_lvds_source, addr = 0x4, val = 0x0!   <-- READ Value
[  163.840334] [DLPC ERROR:]dlpc_select_lvds_source CMD_INPUT_DATA_CHANNEL_SETUP value fail
=====================================================
  • Hi Frank,

    I apologize for the delay, I am going to transfer you into the E2E DLP forum which handles DLPC6401 topics. Someone should be able to address your question there.

    Best regards,
    Trevor
  • There are two command written issues:
    1. Can't switch DLPC6401 input data channel to port2.(I2C:04h)
    2.Can't change LVDS clock frequency range to 65~90MHz(I2C:17h)
    0x17 bit[1:0] : 1 - Source LVDS clock frequency range 65 to 90 MHz

    We also want to know how to write LED Current Control (I2C: 4Bh), we don't know where to disable the White Point Correction
    [DLPC6401 Programmer's Guide] Since DLPC6401 automatically adjusts the currents for maintaining the White Point, this command is primarily intended to be read only. However, if you want to explicitly control the LED PWMs, then you can do so by disabling the White Point Correction
    algorithm.
  • Hi Frank,

    Please see my reply below.

    1. Can't switch DLPC6401 input data channel to port2.(I2C:04h)

    We don't have any known issue regarding coomand 0x04. This command sets the port configuration for LVDS or Parallel port and can fail if Source port configuration get and set APIs fail. It will be helpful to get the serial debug log of your system to help identify the root cause.

    2.Can't change LVDS clock frequency range to 65~90MHz(I2C:17h)

    65-90MHz is currently not supported by DLPC6401 project.

    3. We also want to know how to write LED Current Control (I2C: 4Bh), we don't know where to disable the White Point Correction.

    WPC algorithm is known as CCI in DLPC6401 system. The command to disable the algorithm is w 0x34 0xd7 0x02
  • Hi Shivam,

    Thanks for your reply!
    1. write 0x34 0x80 0x03 to switch LCVS successfully now
    2. how to understand the following descriptions in DLPC6401 programmer's guide
    0 - Source LVDS clock frequency range 25 to 65 MHz
    1 - Source LVDS clock frequency range 65 to 90 MHz
    3. We tried as you mentioned, yes it seems no any effect on the screen.
  • Hi Frank,

    1. write 0x34 0x80 0x03 to switch LCVS successfully now

    [Shivam]: Are you able to switch to LVDS data now.

    2. how to understand the following descriptions in DLPC6401 programmer's guide
    0 - Source LVDS clock frequency range 25 to 65 MHz
    1 - Source LVDS clock frequency range 65 to 90 MHz

    [Shivam]: Currently we don't support the 65-90MHz in the firmware. Maybe we need a note to notify this in Programmers guide. Sorry for the inconvenience.

    3. We tried as you mentioned, yes it seems no any effect on the screen.

    [Shivam]: Section 8.9.1 of the Programmers guide explains the command 0x57. BIT0 enables or disables the CCI. This may or may not have any effect on the image. Please try changing LED current after disabling CCI.

    Regards,
    Shivam
  • Hi Shivam,

    Yes, we are able to switch to LVDS data. thanks!

    best regard,

    Frank