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.

DS90UB941AS-Q1: Symmetric Splitting – Left/Right setting questions

Part Number: DS90UB941AS-Q1

Hi team

Customer used the 941AS splitter mode but could not output the picture. Besides, they used Independent 2:2 mode and successfully to output the SoC 1920*720 picture and they connected the DSI only with 941AS DSI port0. If they switch the mode to Symmetric Splitting- Left/Right, they monitored the 948 (DES side) output lane 3 and found that there was no Hsync and Vsync waveform, but there was a clock output from 948 which was 1/2 of the DSI clock and this was proper.

Here I listed customer register configuration from 941AS:

unsigned char ds90ub941_reg_init[INIT_MAX_REG][2]=

{

{0x01,0x0c},

{0x56,0x80},

{0x1E,0x01},

{0x32,0xc0},//

{0x33,0x03},//

 

{0x4f,0x8c},

{0x5b,0x07},

{0x40,0x04},

{0x41,0x05},

{0x42,0x0e},

 

{0x01,0x00},

 

           };

Could you please help to check when customer would like to use Symmetric Splitting - left/right setting, what configuration should be set to 941AS to successfully output the SoC picture? 

 

 

  • Hi Zirui,

    I have a few concerns with this configuration:

    {0x01,0x0c},
    • This command should be split into two different commands, it is good practice to make sure only one bit in this register is written to at a time.
      • For example:
        board.WriteI2C(UB941AS,0x01,0x02) # Reset
        time.sleep(0.1)
        board.WriteI2C(UB941AS,0x01,0x08) # Disable DSI

    {0x32,0xc0},//

    {0x33,0x03},//

    • This sets 2D line size to 960. What is the full timing you are using? If the video timing for one display is 1920x720, this 2D line size should be set to 1920, not 960.

    {0x40,0x04},

    {0x41,0x05},

    {0x42,0x0e},

    • I am doubtful that this is the correct TSKIP value, can you provide full timing including PCLK?
    {0x01,0x00},
    • Before this command there are some missing steps. Typically there is cropping and init commands.
      • For example:
        board.WriteI2C(UB941AS,0x1E,0x01) # Select port 0: 1920x720
        board.WriteI2C(UB941AS,0x36,0x00)
        board.WriteI2C(UB941AS,0x37,0x80) # X Start = 0
        board.WriteI2C(UB941AS,0x38,0x7F)
        board.WriteI2C(UB941AS,0x39,0x07) # X Stop = 1919
        board.WriteI2C(UB941AS,0x3A,0x00)
        board.WriteI2C(UB941AS,0x3B,0x00) # Y Start = 0
        board.WriteI2C(UB941AS,0x3C,0xCF)
        board.WriteI2C(UB941AS,0x3D,0x02) # Y Stop = 719

        board.WriteI2C(UB941AS,0x1E,0x02) # Select port 1: 1920x720
        board.WriteI2C(UB941AS,0x36,0x00)
        board.WriteI2C(UB941AS,0x37,0x80) # X Start = 0
        board.WriteI2C(UB941AS,0x38,0x7F)
        board.WriteI2C(UB941AS,0x39,0x07) # X Stop = 1919
        board.WriteI2C(UB941AS,0x3A,0x00)
        board.WriteI2C(UB941AS,0x3B,0x00) # Y Start = 0
        board.WriteI2C(UB941AS,0x3C,0xCF)
        board.WriteI2C(UB941AS,0x3D,0x02) # Y Stop = 719

        board.WriteI2C(UB941AS,0x40,0x10) # Init DSI Clock Settings (From Section 10.2 of datasheet)
        board.WriteI2C(UB941AS,0x41,0x86) # Init DSI Clock Settings (From Section 10.2 of datasheet)
        board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)
        board.WriteI2C(UB941AS,0x41,0x94) # Init DSI Clock Settings (From Section 10.2 of datasheet)
        board.WriteI2C(UB941AS,0x42,0x0A) # Init DSI Clock Settings (From Section 10.2 of datasheet)

        board.WriteI2C(UB941AS,0x01,0x00) #Release DSI

    Regards,

    Ben

  • Hi Ben,

    Sure I will let customer to have a try for these commands. Besides, Customer has requirement of using DSI clock in 941AS splitter mode for 2 different timing specs displays, so please help us to generate the script for us or to check whether the splitter mode could work for these 2 displays:

    display A timing:

    display B timing:

    Here is the topology and signal transport link:

    Customer uses single DSI port 0 input for 941AS and splitter mode to output 2 display with above timings. In my opinion splitter mode need the same Htotal*Vtotal right? Please double check how could we implement this solution with your script, thank you.

  • Hi Zirui,

    It is possible for the 941AS to do asymmetric splitting in certain cases. Ideally the vertical dimensions will be the same for the two panels, because in the smaller panel, the excess active video is turned into blanking. In this case, the active video is the same dimension for both the vertical and horizontal, but with different blanking. So it's not exactly an asymmetric split. It would certainly be more straightforward if the two panels had the exact same timing, however it's unclear if that's possible since display B spec doesn't show minimums.

    This being said, I am confused about the topology you have posted. It shows the DSI input to the 941 is 3840x720, which is 4x the timing of a single display. In a symmetric split, the superframe should be 2x the timing of a single display. In this case the superframe should be 1920*720. Then this superframe is split over the two ports for two displays with the dimension 960*720.

    Regards,

    Ben

  • Hi Ben

    Let me clarify the topology picture. They used one 941AS with 2 ports respectively connected to one 948. Each 948 use dual oldi mode to output a 1920*720 display, so you could see lvds1 and lvds2 respectively drives 960*720. So I think the timing for A and B screen, the H parameters should multiply 2. Do you understand the topology now?  

    Here is their software configuration to implement the topology, please help to check whether it is right:

    941 splitter mode configuration.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {0x01,0x0f},
    {0x1E,0x01},
    {0x4f,0x8c},
    {0x5b,0x07},
    {0x40,0x05},
    {0x41,0x21},
    {0x42,0x60},
    {0x40,0x04},
    {0x41,0x05},
    {0x42,0x0e},
    {0x32,0x80},//1920
    {0x33,0x07},//
    {0x66,0x03},
    {0x67,0x68},
    {0x66,0x1a},
    {0x67,0x19},
    {0x6a,0x88},
    {0x6b,0x10},
    {0x6c,0x10},
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Besides, if we want to change the clock source from internal ref clk to DSI clk, just config 0x56 register without changing other registers to successfully output?

  • Hi Zirui,

    What you described makes sense, but it does not match the timing you have shown me. The two display timings you previously attached show two displays with 960*720 timing. You described two displays with 1920*720 timing:

    Each 948 use dual oldi mode to output a 1920*720 display

    So basically I need confirmation on the timing of the two displays being used. If it is indeed two 1920*720 displays, can you provide the timing for those displays? Since the previous timings are not for 1920*720.

    There might be a misunderstanding about 2*H. Just to clarify: In a symmetric splitting scenario, the 941AS should receive 2*H timing, and normal V timing. 2D Line width should be programmed to the actual Horizontal Width of the display, not 2*H. The two 948s will each receive the actual timing (not 2*H) and function normally.

    Besides, if we want to change the clock source from internal ref clk to DSI clk, just config 0x56 register without changing other registers to successfully output?

    This is correct.

    Regards,

    Ben

  • Hi Ben

    1. Let me clarify the scenario again. We only have 2 displays: A and B therefore I clarify the topology and each of the screen use 1920*720@60hz resolution.

    Here is our configuration for 941AS register which followed your 941AS splitter mode documents chapter 7 instruction to configure the splitter mode:

    Splitter.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #941AS configuration, the left one is register address and the right one is value
    {0x01,0x0f},
    {0x1E,0x01},
    {0x4f,0x8c},
    {0x5b,0x07},
    {0x56,0x80},
    {0x40,0x05},
    {0x41,0x21},
    {0x42,0x60},//HS,vs signal is active low
    {0x40,0x04},
    {0x41,0x05},
    {0x42,0x40}, //PCLK:192MHZ,PCLK*3=DSI CLK, 576MHZ. TSKIP_CNT=0X20
    {0x32,0x80}, //Set the line size to 1920
    {0x33,0x07},//
    {0x34,0x0c},//delay
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Splitter Mode Operations With the DS90Ux941ASQ1.pdf

    Following is the timing we set to DSI port 0 from 8155 which is ok with both the A and B displays:

    Timing.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <VideoMode
    eVideoFormat = '15'
    uActiveH = '3840'
    uFrontPorchH = '126'
    uPulseWidthH = '64'
    uBackPorchH = '64'
    bActiveLowH = '1'
    uActiveV = '720'
    uFrontPorchV = '45'
    uPulseWidthV = '8'
    uBackPorchV = '8'
    bActiveLowV = '1'
    uPixelFreqInHz = '191844840'
    uRefreshRate = '60'
    bInterlaced = '0'
    bSupported = '1'
    uPixelRepeatFactor = '0'
    eAspectRatio = '2'
    eOpMode = '1'
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    The phenomenon is the 2 screens both failed to output the picture from SoC, just black screens.

    Dump registers for 941AS after running the splitter configuration when black screens happen:

    20211104-941log.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    wymaddr :1,0
    wymaddr :2,0
    wymaddr :3,92
    wymaddr :4,0
    wymaddr :5,0
    wymaddr :6,68
    wymaddr :7,0
    wymaddr :8,0
    wymaddr :9,1
    wymaddr :a,a2
    wymaddr :b,d
    wymaddr :c,7
    wymaddr :d,30
    wymaddr :e,0
    wymaddr :f,0
    wymaddr :10,0
    wymaddr :11,0
    wymaddr :12,0
    wymaddr :13,8f
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    (Left number is reg address and right one is reg value)

    2. However, displays could work in 941AS independent 2:2 mode, here I also listed the configuration we have done:

    independent.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #Independent22 mode could display normally
    Independent 2:2 Mode
    {0x01,0x08},
    {0x1E,0x01},
    {0x1E,0x04},
    {0x1E,0x01},
    {0x03,0x9A},
    {0x1E,0x02},
    {0x03,0x9A},
    {0x1E,0x01},
    {0x40,0x05},
    {0x41,0x21},
    {0x42,0x60},
    {0x1E,0x02},
    {0x40,0x09},
    {0x41,0x21},
    {0x42,0x60},
    {0x1E,0x01},
    {0x5B,0x05},
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Please help us to check what configuration we wrongly/missing configured quickly, the actual application scenario is:

    DSI continuous clock mode, DSI single port0, 941AS splitter mode with two 948s.

    Wait for your response and please tell us how to successfully configure the 941AS splitter mode, thank you very much!

  • Hi Zirui,

    Got it, thanks for the clarification. Two displays, both 1920*720p. This will be a symmetric split. I also notice the configuration is different than the original one you posted, this time it does align with 1920*720.

    I am mostly concerned with programming {0x01,0x0f} as you should really only program one bit at a time in this register. Try this script:

    3840x720 Sym Split Script (1).py
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    # 3840x720@60 Symmetric Split Example - 2x 1920x720@60
    # Video 0 and Video 1 Parameters:
    # HACT = 1920
    # HFP = 64
    # HSYNC = 32
    # HBP = 32
    # VACT = 720
    # VFP = 45
    # VSYNC = 8
    # VBP = 8
    # PCLK = 96MHz
    # DSI Superframe Dimensions:
    # HACT = 3840
    # HFP = 128
    # HSYNC = 64
    # HBP = 64
    # VACT = 720
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Regards,

    Ben

  • Hi Ben

    Thanks for your support but the script still could not work. Here we also dumped the 941AS registers:

    20211105-log1.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    wymaddr :1,0
    wymaddr :2,0
    wymaddr :3,92
    wymaddr :4,0
    wymaddr :5,0
    wymaddr :6,68
    wymaddr :7,0
    wymaddr :8,0
    wymaddr :9,1
    wymaddr :a,8
    wymaddr :b,1
    wymaddr :c,7
    wymaddr :d,30
    wymaddr :e,0
    wymaddr :f,0
    wymaddr :10,0
    wymaddr :11,0
    wymaddr :12,0
    wymaddr :13,8f
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    To provide more reference information, customer used the following configuration to achieve Replicate Mode, both screens can be displayed normally, and the DSI clock is also used.

    Here is the Replicate Mode configuration:

    Replicate mode.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    {0x01,0x0f},
    {0x1E,0x01},
    {0x4f,0x8c},
    {0x5b,0x04},
    {0x56,0x00},
    {0x40,0x05},
    {0x41,0x21},
    {0x42,0x60},
    {0x40,0x04},
    {0x41,0x05},
    {0x42,0x40},
    {0x40,0x10},
    {0x41,0x86},
    {0x42,0x0a},
    {0x41,0x94},
    {0x42,0x0a},
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Under the premise of normal Replicate mode, we do not change anything, only switch to splitter mode (0x5B,0x07), but the black screen happened. We would like to know why and need your quick help since the case is urgent, thank you.

  • Hi Zirui,

    Under the premise of normal Replicate mode, we do not change anything, only switch to splitter mode (0x5B,0x07)

    Are you only doing this to switch to splitter mode? There are more configurations that need to be done, as can be seen in the script I sent you. Left/Right 3D processing must be enabled, among other configurations. Please incorporate the necessary configurations into your script. These can be found in the script I provided, or even in the Splitter Mode Operations with the DS90Ux941ASQ1 appnote. Here is a snip from this appnote:

    If you add these configurations (corresponding to your timing of course), splitter mode should work.

    Also, for proper operation of Left/Right 3D format, the images must have identical video format (lines, pixels, blanking). As discussed before, the pixel clock must be twice the frequency needed for a single image. This means the timing from the DSI input must have 2*(Hactive, Hfront porch, Hback porch, Hsync).

    Regards,

    Ben

  • Hi Ben

    Since the case is quite urgent, could you please kindly attend the meeting I have sent invitation to you via e-mail so that we could guide customer to do the splitter configuration? Thank you very much. If you have other convenient time, please let us know (we have 15 hours time difference) so your afternoon or evening maybe OK, please help us to fix the issue, thank you.

  • Hi Zirui,

    As was discussed in our meeting, I will double check the DSI/SOC requirements.

    Regards,

    Ben

  • Hi Zirui,

    Can you confirm the following:

    • DSI mode (burst mode/non-burst mode with sync events/sync pulses)
    • H/Vsync polarity needed for the two displays
    • The two display specs you provided have different blanking parameters. Can you please confirm again that the blanking for each display is exactly the same, and provide the correct spec?
    • If the timing for both displays correlate with the timing in the display B spec, the DSI timing front porch should be 128, not 126.

    Regards,

    Ben