HDMI Q&A

Q1:如何调整hdmi驱动能力

  1. 驱动电流调整寄存器为145A,可以先通过riu_w写寄存器的方式调到一个合适值。各相关设定参考下表

  2. hdmi已增加结构体参数

    typedef struct  MI_HDMI_AnalogDrvCurrent_s
    {
        MI_U8 u8DrvCurTap1Ch0;
        MI_U8 u8DrvCurTap1Ch1;
        MI_U8 u8DrvCurTap1Ch2;
        MI_U8 u8DrvCurTap1Ch3;
        MI_U8 u8DrvCurTap2Ch0;
        MI_U8 u8DrvCurTap2Ch1;
        MI_U8 u8DrvCurTap2Ch2;
        MI_U8 u8DrvCurTap2Ch3;
        MI_U8 u8DrvCurPdRtermCh;
        MI_U8 u8DrvCurPdLdoPreDrvCh;
        MI_U8 u8DrvCurPdLdoMuxCh;
    } MI_HDMI_AnalogDrvCurrent_t;
    

    需要在MI_HDMI_Open后调用MI_HDMI_SetAnalogDrvCurrent设置想要的值。

  3. 如果通过riu_w写寄存器的方式调到一个合适值是

    Bank 145A寄存器0x32 0x000F,则bit[3:0]代表u8DrvCurPdRtermCh=0xf,bit[7:4]代表u8DrvCurPdLdoPreDrvCh=0,bit[11:8]代表u8DrvCurPdLdoMuxCh=0。

    Bank 145A寄存器0x22 0x1415,则bit[5:0]代表u8DrvCurTap1Ch0=0x15,bit[13:8]代表u8DrvCurTap1Ch1=0x14。

    Bank 145A寄存器0x23 0x1617,则bit[5:0]代表u8DrvCurTap1Ch2=0x17,bit[13:8]代表u8DrvCurTap1Ch3=0x16。

参考代码:

MI_HDMI_AnalogDrvCurrent_t CurInfo = {0x15, 0x14, 0x17, 0x16,0,0,0,0,0xf,0,0}; 
MI_HDMI_SetAnalogDrvCurrent(g_HdmiAttr.eHdmi, &CurInfo);

Q2:hdmi做颜色空间的切换,需要调用哪个函数?

通过MI_HDMI_SetAttr(MI_HDMI_DeviceId_e eHdmi, MI_HDMI_Attr_t *pstAttr);函数接口设置MI_HDMI_Attr_t→MI_HDMI_VideoAttr_sMI_HDMI_ColorType_e eColorType参数。可参考MI HDMI API

Q3:920G/910Q上面MI_DISP_SetHdmiParam设置的参数是否会对VGA也有作用?如果想要HDMI和VGA分开设置不同参数,能否实现?

920G/910Q上面调用MI_DISP_SetHdmiParam这个接口设置参数对VGA那边也会有效,因为二者同源的关系,csc是同一个地方做的,也因此目前无法分开设置不同效果参数。

Q4: HDMI获取显示器支持能力的接口

通过MI_HDMI_GetSinkInfo接口可以获取显示器支持能力集,调用前必须先打开 HDMI。

Q5: 如何强制设置HDMI输出模式?

echo setHdmiMode hdmi > /proc/mi_modules/mi_hdmi/mi_hdmi0 //强制走 hdmi 模式

echo setHdmiMode dvi > /proc/mi_modules/mi_hdmi/mi_hdmi0 //强制走 dvi 模式