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.

DM8168 EVM, VOUT0 over Sii9022A

Hello,


I'm using DVR-RDK 4.01.00.02 with DM8168 EVM (Rev F.) and EIO daughter card (Rev C.)


Decode and display demo is working fine over on-chip HDMI, but I'm trying to get it outputting to off-chip HDMI (via VOUT0 and Sii9022A transmitter).


As I see, Sii9022A is not handled by sii9022 driver in Linux (as in EZSDK), but from userspace i2c calls in McFW demo applications. Also, all demo applications which are displaying something seem to call Device_sii9022aInit() and Device_getVidDecI2cAddr(), so I guess they should be outputting to on-chip and off-chip HDMI at the same time.


But I have no picture on off-chip HDMI. The screen periodically goes blank with input signal detected for several seconds, and then "no signal" for several seconds. Changing off-chip HDMI resolution at runtime does nothing.

Do I have to change anything else in McFW demos to get the output over Sii9022A, or it is set by default?

Btw, VOUT0 over Sii9022A is working fine under EZSDK 5.05 if I load sii9022a.ko module and manually change output to dvo2, triplediscrete, rgb888...

Thanks

  • You can set vdisParams.enableConfigExtVideoEncoder = FALSE and vdisParams.enableConfigExtVideoEncoder as FALSE before Vdis_init. DVRRDK will then not configure external video encoder. You can then do all required configuration from Linux.

  • Thanks Badri, I set enableConfigExtVideoEncoder to FALSE before Vdis_init() call in demo_vdec_vids.c, and then inserted sii9022a.ko between ./load.sh and ./run.sh, and it's working now.

    There were two minor issues:

    1. The colors were all wrong because DVO2 output was set to SYSTEM_DF_YUV422SP_UV and VDIS_DVOFMT_DOUBLECHAN

    2. Picture was shifted for several centimeters

    It seems that sii9022a Linux driver is configured for rgb888 input with discrete sync, so I changed DVO2 parameters to SYSTEM_DF_RGB24_888 and VDIS_DVOFMT_TRIPLECHAN_DISCSYNC, and the picture is OK now.

    However, if I change DVO2 sync to VDIS_DVOFMT_DOUBLECHAN or VDIS_DVOFMT_TRIPLECHAN_EMBSYNC, and also change the sii9022a driver to use embedded instead of discrete sync (either directly in the driver file, or via sii9022a_pdata initialization structure in linux/.../board-ti8168evm.c), I get no picture at all. Do you maybe know what is the problem with embedded sync?

    Do you also know why the McFW method of setting Sii9022A from userspace doesn't work so I have to use Linux driver? Is it planned for fixing in a future version of DVR-RDK?

  • We haven't tried out DVRRDK offchip HDMI on EVM+Expansion IO daughter card.

    Pls confirm the followind:

    1.I2C device address and I2C number are correct. DVRRDK select I2C device 1 and address 0x39. Expansion IO schematics matches this but check that SIL9022a configuration doesn't report any i2c errors

    2. /dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c

        Vdis_init

        configures SIL9022a for embedded sync. Try selecting the discrete synch configuration that works for sil9022a.ko and see if that works.

  • Thanks Badri.

    If I set Sii9022A's encCreateParams.syncMode to DEVICE_VIDEO_ENCODER_EXTERNAL_SYNC, while using SYSTEM_DF_RGB24_888 and VDIS_DVOFMT_TRIPLECHAN_DISCSYNC configuration for DVO2, Sii9022A output is working properly without the need for Linux driver, so everything can be configured from userspace.

    I also had to change Sii9022A's encCreateParams.clkEdge to TRUE, otherwise I get red dots on the screen. By default, the same happens if I use Linux driver because board init file sets sii9022a_pdata.clk_edge to false (0). I guess it is related to DM8168 errata topic 2.1.47.

    Now, just to figure out how to enable proper 16-bit output over VOUT0 and Sii9022A, because we will be using it in our design based on EVM...

  • For 16-bit output:

    I got the picture by setting VDIS_DVOFMT_SINGLECHAN and SYSTEM_DF_YUV422SP_UV for DVO2, and DEVICE_VIDEO_ENCODER_EMBEDDED_SYNC for Sii9022A. But due to Sii9022A being preconfigured for RGB888 input, the colors are wrong.

    mcfw/src_linux/devices/sii9022a/src/sii9022a.c, function Device_sii9022aCfgYcMode, sets the YC mode as register 0x0B = value 0x00, without any comments. The datasheet for this chip is not publicly available so I don't know the list of registers and their values.

    Do you know what needs to be set here for YUV422 input?

  • Set the below registers and check the output

     

    register 0x09 = 0x02

    register 0x0a = 0x02

     

    Rgds,

    Brijesh

  • Sorry Brijesh, this doesn't have effect, the output is the same.

    Just to avoid confusion, for this 16-bit testing here is the only difference compared to stock DVR-RDK 4.01:

    diff --git a/dvr_rdk/mcfw/src_linux/devices/sii9022a/src/sii9022a.c b/dvr_rdk/mcfw/src_linux/devices/sii9022a/src/sii9022a.c
    index 1ade033..7af37da 100755
    --- a/dvr_rdk/mcfw/src_linux/devices/sii9022a/src/sii9022a.c
    +++ b/dvr_rdk/mcfw/src_linux/devices/sii9022a/src/sii9022a.c
    @@ -723,18 +723,21 @@ static Int32 Device_sii9022aCfgInBus(Device_Sii9022aObj* pSiiObj)
     static Int32 Device_sii9022aCfgYcMode(Device_Sii9022aObj* pSiiObj)
     {
         Int32 status = 0;
    -    UInt8 regAddr;
    -    UInt8 regValue;
    +    UInt8 regAddr[2];
    +    UInt8 regValue[2];
     
    -    regAddr = 0x0B;
    -    regValue = 0x00;
    +    regAddr[0] = 0x09;
    +    regValue[0] = 0x02;
    +
    +    regAddr[1] = 0x0A;
    +    regValue[1] = 0x02;
     
         status = OSA_i2cWrite8(
                         &gDevice_sii9022aCommonObj.i2cHandle,
                         pSiiObj->createArgs.deviceI2cAddr,
    -                    &regAddr,
    -                    &regValue,
    -                    1);
    +                    regAddr,
    +                    regValue,
    +                    2);
     
         return status;
     }
    diff --git a/dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c b/dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c
    index 58883bc..e79740f 100755
    --- a/dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c
    +++ b/dvr_rdk/mcfw/src_linux/mcfw_api/ti_vdis.c
    @@ -369,7 +369,7 @@ Int32 Vdis_init(VDIS_PARAMS_S * pContext)
                 encCreateParams.hdmiHotPlugGpioIntrLine = 0;
     
                 encCreateParams.syncMode = DEVICE_VIDEO_ENCODER_EMBEDDED_SYNC;
    -            encCreateParams.clkEdge = FALSE;
    +            encCreateParams.clkEdge = TRUE;
     
     #if defined (TI_814X_BUILD) || defined (TI_8107_BUILD)
                 encCreateParams.clkEdge = FALSE;

    I also tried disabling HDMI and/or HDCOMP outputs, but no difference.

    I also tried changing deviceParams[VDIS_DEV_DVO2].outputInfo.dvoFmt with the following results:

    1. VDIS_DVOFMT_SINGLECHAN: green color component only, with vertical interlacing
    2. VDIS_DVOFMT_DOUBLECHAN: green color component only, no vertical interlacing (same as with default Sii9022A configuration)
    3. VDIS_DVOFMT_TRIPLECHAN_EMBSYNC: green and pink tones, no vertical interlacing

    Do you know how else could be Sii9022A configured for YUV422SP_UV input?

  • Hi Ivan,

     

    Could you tell what is the interface between DVO2 output and sii9022a input? are you using 16bit emb. sync format or someother format?

    Please dont change register value of 0x0B, it should still be configured with the value 0x00.

    If it is emb sync format, can you try setting syncMode to DEVICE_VIDEO_ENCODER_EMBEDDED_SYNC in the create args?

     

    Regards,

    Brijesh

  • Hi Brijesh,

    Just to be clear, I'm now testing 16-bit embedded sync YUV422 communication between DVO2 and Sii9022A, so the settings are as following:


    1. DVO2 output format = VDIS_DVOFMT_DOUBLECHAN and SYSTEM_DF_YUV422SP_UV.

    2. Sii9022A syncMode = DEVICE_VIDEO_ENCODER_EMBEDDED_SYNC.

    which are the default settings in DVR-RDK. The only relevant changes I made are located in sii9022a.c driver file and its function Device_sii9022aCfgYcMode. The main problem is that Sii9022A datasheet is not publicly available and Silicon Image is not responding to e-mails, so I don't know what I'm currently setting with this:

        regAddr[0] = 0x0B;
        regValue[0] = 0x00;
    
        regAddr[1] = 0x09;
        regValue[1] = 0x02;
    
        regAddr[2] = 0x0A;
        regValue[2] = 0x02;
    

    And even with this, I still get only green color component on Sii9022A output and my HDMI monitor, so Sii9022A input is not set properly.

    As a reminder, I changed Sii9022A input to DISCRETE_SYNC just to test 24-bit RGB888 communication with disc. sync between DVO2 and Sii9022A. That was in the first five posts of this topic.

    But now when RGB888 discrete sync is confirmed to be working on DM8168 EVM + EIO board, I have to determine if 16-bit YUV embedded sync is also functional. In our new design, due to size and pin count constraints, we will have only 16 data lines between DVO2 and Sii9022A, so I must confirm that this mode is also functional.

    Thanks

  • In that case, can you first check your connection between DVO2 and sii9022a? I mean, luma output of DVO2 is connected to the luma input of si9022a. similarly for chroma.

     

    Also please note that the 16bit output of DVO2 with the 16bit input of si9022 is tested on other platforms..

     

    Rgds,

    Brijesh

  • According to EVM and EIO schematics, eight upper data lines (2-9) per each channel are connected properly between DVO2 and Sii9022A, as well as discrete sync signals (HSYNC, VSYNC, AVID and FLD). Also, 24-bit RGB888 with discrete sync is working fine over that interface.

    There is just one slot and termination resistors between DVO2 and Sii9022A, nothing else.

    However, two lower data lines (0-1) for Y/C channels are connected to Sii9022A only via "red" port (pins AU10, AL10, AK10 and AU9). But they are also available on separate pins AP9, AU8, AR9 and AT9.

    Are they actually being driven/used in YCbCr 422 mode, or it uses upper eight bits only? Can it be the multiplexing problem?

    I attached the relevant schematics pages. Can you please do a quick check if this is connected in the same way on other platforms (e.g. UD8168)?

    schematics.rar
  • The UDDVR schematic for DVO2->SIL9022a connection is above. COUT is D16-D23 whereas in EVM XIO schematics COUT appears to be D0-D7. 

     eb

  • Thanks Badri, this explains the problem both in YUV444 and YUV422 mode.

    We will then connect Sii9022A to DVO2 as on UDDVR.

    Thank you