Other Parts Discussed in Thread: DS90UB984-Q1
加串器使用UB983,解串器使用UB984,使用DP1进行输出,但发现硬件设计错误,现在把eDP1_HPD的86引脚飞线到R36,但984打pattern仍不出图
加串器使用UB983,解串器使用UB984,使用DP1进行输出,但发现硬件设计错误,现在把eDP1_HPD的86引脚飞线到R36,但984打pattern仍不出图
这里有几个问题:
系统层面问题:
一级供应商/原始设备制造商?
新的设计还是生产系统?
串行器/解串器部件编号?
FPD-Link III 或 IV 模式?
分辨率、色彩深度、PCLK 频率?
FPD-Link 模式/FPD 速率?
DPRX/DPTX 速率?
系统芯片/源设备?
已构建的系统数量与故障设备数量之比?
单个或多个显示器/主机/电子控制单元/车辆控制单元系统?
故障模式详情:
观察到的问题(黑屏/闪烁/无锁定/失真/间歇性出现)?
问题发生的时间:启动时/运行时等?
重现频率?
环境:车辆/测试台?
恢复方法:自动/软重启/硬重启/电源重启/重新初始化?
温度依赖性:室温/低温/高温?
关于故障模式:
你能说明一下你的设置情况吗?也就是说,983 与 984 相连,但你却试图将数据输出到本地的“patgen”设备上?
问题在于,您看到的是 984 个链接训练失败的情况?
您是否已正确将视频流映射到 DP1 了?
您在此处设置的是什么 DPTX 速率和通道数量?
能否发送您的脚本以便审核?
请使用以下脚本来记录故障模式发生时的情况。
## TI Confidential - NDA Restrictions
##
## Copyright 2018 Texas Instruments Incorporated. All rights reserved.
##
## IMPORTANT: Your use of this Software is limited to those specific rights
## granted under the terms of a software license agreement between the user who
## downloaded the software, his/her employer (which must be your employer) and
## Texas Instruments Incorporated (the License). You may not use this Software
## unless you agree to abide by the terms of the License. The License limits your
## use, and you acknowledge, that the Software may not be modified, copied or
## distributed unless embedded on a Texas Instruments microcontroller which is
## integrated into your product. Other than for the foregoing purpose, you may
## not use, reproduce, copy, prepare derivative works of, modify, distribute,
## perform, display or sell this Software and/or its documentation for any
## purpose.
##
## YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
## PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
## INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
## NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS
## INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
## NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL
## EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT
## LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL
## DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS,
## TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
## LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
##
## Should you have any questions regarding your right to use this Software,
## contact Texas Instruments Incorporated at www.TI.com.
## Debug Script Version 1
import time
#######################User_Input############################
serAddr = 0x18
desAlias0 = 0x58
SER = "Ux983" # Chosse HH983 or Ux983 or Ux943A or Ux981 or Ux94x
DES = "Ux984" # Chosse HH984 or Ux984 or Ux988 or Ux948
MST = 0 # For Ux983 Select 0 for SST and 1 for MST mode
DP0 = 1 # For Ux984 Enable DPTX port0 diagnostics
DP1 = 0 # For Ux984 Enable DPTX port1 diagnostics
##################Keep Always ON#############################
VP = 1 # Enable VP diagnostics
SER_MSAs = 1 # Dump 983 SER MSAs
DTGs = 1 # dump DES DTGs
DPRX = 1 # Enable 983 DPRX diagnostics
DPTX = 1 # Enable 984 DPTX diagnostics
#############################################################
def apb_read_reg(DevAddrRxMain, addr16b):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(DevAddrRxMain, APB_ADR0, addr16b_lsb)
board.WriteI2C(DevAddrRxMain, APB_ADR1, addr16b_msb)
board.WriteI2C(DevAddrRxMain, APB_CTL, 0x03)
apbData0 = board.ReadI2C(DevAddrRxMain, APB_DATA0)
apbData1 = board.ReadI2C(DevAddrRxMain, APB_DATA1)
apbData2 = board.ReadI2C(DevAddrRxMain, APB_DATA2)
apbData3 = board.ReadI2C(DevAddrRxMain, APB_DATA3)
apbData = (apbData3 << 24) | (apbData2 << 16) | (apbData1 << 8) | (apbData0 << 0)
val32bit = apbData
return val32bit
def apb_write_reg(DevAddrRxMain, addr16b, data32b):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(DevAddrRxMain, APB_ADR0, addr16b_lsb)
board.WriteI2C(DevAddrRxMain, APB_ADR1, addr16b_msb)
# print 'data32b', data32b
apbData0 = int((data32b & 0x000000FF) >> 0)
# print 'type', type(apbData0), apbData0
apbData1 = int((data32b & 0x0000FF00) >> 8)
apbData2 = int((data32b & 0x00FF0000) >> 16)
apbData3 = int((data32b & 0xFF000000) >> 24)
board.WriteI2C(DevAddrRxMain, APB_DATA0, apbData0)
board.WriteI2C(DevAddrRxMain, APB_DATA1, apbData1)
board.WriteI2C(DevAddrRxMain, APB_DATA2, apbData2)
board.WriteI2C(DevAddrRxMain, APB_DATA3, apbData3)
board.WriteI2C(DevAddrRxMain, APB_CTL, 0x01)
def MSA_apb_read_reg(addr16b, channel, Device_ID):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
if channel == 0:
page = 0x03
elif channel == 1:
page = 0x0B
else:
page = 0x03
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(Device_ID, APB_ADR0, addr16b_lsb)
board.WriteI2C(Device_ID, APB_ADR1, addr16b_msb)
board.WriteI2C(Device_ID, APB_CTL, page)
apbData0 = board.ReadI2C(Device_ID, APB_DATA0)
apbData1 = board.ReadI2C(Device_ID, APB_DATA1)
apbData2 = board.ReadI2C(Device_ID, APB_DATA2)
apbData3 = board.ReadI2C(Device_ID, APB_DATA3)
apbData = (apbData3 << 24) + (apbData2 << 16) + (apbData1 << 8) + (apbData0 << 0)
val32bit = apbData
return val32bit
def Measure_Video_DPTX(desAlias0, Port, PRNT_STATUS):
print("")
Offset = 0x00
htotal = MSA_apb_read_reg(0x180 + Offset, int(Port), desAlias0)
vtotal = MSA_apb_read_reg(0x184 + Offset, int(Port), desAlias0)
hres = MSA_apb_read_reg(0x194 + Offset, int(Port), desAlias0)
vres = MSA_apb_read_reg(0x198 + Offset, int(Port), desAlias0)
hstart = MSA_apb_read_reg(0x19C + Offset, int(Port), desAlias0)
vstart = MSA_apb_read_reg(0x1A0 + Offset, int(Port), desAlias0)
hswidth = MSA_apb_read_reg(0x18C + Offset, int(Port), desAlias0)
vswidth = MSA_apb_read_reg(0x190 + Offset, int(Port), desAlias0)
if PRNT_STATUS == 1:
print("Port", Port, ": DPTX VIDEO RESOLUTION:")
print("Port", Port, ": htotal (0x180) = " + str(htotal))
print("Port", Port, ": vtotal (0x184) = " + str(vtotal))
print("Port", Port, ": hres (0x18C) = " + str(hres))
print("Port", Port, ": vres (0x190) = " + str(vres))
print("Port", Port, ": hstart (0x19C) = " + str(hstart))
print("Port", Port, ": vstart (0x1A0) = " + str(vstart))
print("Port", Port, ": hswidth (0x18C) = " + str(hswidth))
print("Port", Port, ": vswidth (0x18C) = " + str(vswidth))
return htotal, hres, vtotal, vres
def Measure_Video_DPTX_HH(desAlias0, Port, PRNT_STATUS):
print("")
Offset = 0x00
htotal = MSA_apb_read_reg(0x820 + Offset, int(Port), desAlias0)
vtotal = MSA_apb_read_reg(0x824 + Offset, int(Port), desAlias0)
hres = MSA_apb_read_reg(0x834 + Offset, int(Port), desAlias0)
vres = MSA_apb_read_reg(0x838 + Offset, int(Port), desAlias0)
hstart = MSA_apb_read_reg(0x83C + Offset, int(Port), desAlias0)
vstart = MSA_apb_read_reg(0x840 + Offset, int(Port), desAlias0)
hswidth = MSA_apb_read_reg(0x82C + Offset, int(Port), desAlias0)
vswidth = MSA_apb_read_reg(0x830 + Offset, int(Port), desAlias0)
if PRNT_STATUS == 1:
print("Port", Port, ": DPTX VIDEO RESOLUTION:")
print("Port", Port, ": htotal (0x820) = " + str(htotal))
print("Port", Port, ": vtotal (0x824) = " + str(vtotal))
print("Port", Port, ": hres (0x834) = " + str(hres))
print("Port", Port, ": vres (0x838) = " + str(vres))
print("Port", Port, ": hstart (0x83C) = " + str(hstart))
print("Port", Port, ": vstart (0x840) = " + str(vstart))
print("Port", Port, ": hswidth (0x82C) = " + str(hswidth))
print("Port", Port, ": vswidth (0x830) = " + str(vswidth))
return htotal, hres, vtotal, vres
def apb_read_reg_984_DPTX(addr16b, channel, Device_ID):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
if channel == 0:
page = 0x03
elif channel == 1:
page = 0x0B
else:
page = 0x03
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
##print 'READ inst'
board.WriteI2C(Device_ID, APB_ADR0, addr16b_lsb)
board.WriteI2C(Device_ID, APB_ADR1, addr16b_msb)
board.WriteI2C(Device_ID, APB_CTL, page)
apbData0 = board.ReadI2C(Device_ID, APB_DATA0)
apbData1 = board.ReadI2C(Device_ID, APB_DATA1)
apbData2 = board.ReadI2C(Device_ID, APB_DATA2)
apbData3 = board.ReadI2C(Device_ID, APB_DATA3)
apbData = (apbData3 << 24) + (apbData2 << 16) + (apbData1 << 8) + (apbData0 << 0)
val32bit = apbData
Device_ID = 0x00
return val32bit
def Ux984_APB_Dump(Port,Device_RX):
Stream = 0 # 0, 1, 2, or 3
if Stream == 0 :
Offset = 0x00
elif Stream == 1:
Offset = 0x400
elif Stream == 2:
Offset = 0x420
elif Stream == 3:
Offset = 0x500
else:
Offset = 0x00
print "PORT ",Port," DPTX APB Dump: Main Stream Attributes"
REG_000= apb_read_reg_984_DPTX(0x000,int(Port), Device_RX )
print "REG_000 (LINK_BW_SET) = ", (REG_000)
REG_004= apb_read_reg_984_DPTX(0x004,int(Port), Device_RX )
print "REG_004 (LANE_COUNT_SET) = ", (REG_004)
REG_008= apb_read_reg_984_DPTX(0x008,int(Port), Device_RX )
print "REG_008 (ENHANCED_FRAME_EN) = ", (REG_008)
REG_00C= apb_read_reg_984_DPTX(0x00C,int(Port), Device_RX )
print "REG_00C (TRAINING_PATTERN_SET) = ", (REG_00C)
REG_010= apb_read_reg_984_DPTX(0x010,int(Port), Device_RX )
print "REG_010 (LINK_QUAL_PATTERN_SET) = ", (REG_010)
REG_014= apb_read_reg_984_DPTX(0x014,int(Port), Device_RX )
print "REG_014 (SCRAMBLING_DISABLE) = ", (REG_014)
REG_018= apb_read_reg_984_DPTX(0x018,int(Port), Device_RX )
print "REG_018 (DOWNSPREAD_CTRL) = ", (REG_018)
REG_01C= apb_read_reg_984_DPTX(0x01C,int(Port), Device_RX )
print "REG_01C (EDP_CAPABILITY_CONFIG) = ", (REG_01C)
REG_020= apb_read_reg_984_DPTX(0x020,int(Port), Device_RX )
print "REG_020 (HBR2_COMPLIANCE_SCRAMBLER_RESET) = ", (REG_020)
REG_024= apb_read_reg_984_DPTX(0x024,int(Port), Device_RX )
print "REG_024 (DISPLAYPORT_VERSION) = ", (REG_024)
REG_028= apb_read_reg_984_DPTX(0x028,int(Port), Device_RX )
print "REG_024 (PHY_POWER_STATE) = ", (REG_028)
REG_02C= apb_read_reg_984_DPTX(0x02C,int(Port), Device_RX )
print "REG_02C (LANE_REMAP_CONTROL) = ", (REG_02C)
REG_030= apb_read_reg_984_DPTX(0x030,int(Port), Device_RX )
print "REG_030 (CUSTOM_80BIT_PATTERN_0) = ", (REG_030)
REG_034= apb_read_reg_984_DPTX(0x034,int(Port), Device_RX )
print "REG_034 (CUSTOM_80BIT_PATTERN_1) = ", (REG_034)
REG_038= apb_read_reg_984_DPTX(0x038,int(Port), Device_RX )
print "REG_038 (CUSTOM_80BIT_PATTERN_2) = ", (REG_038)
REG_060= apb_read_reg_984_DPTX(0x060,int(Port), Device_RX )
print "REG_060 (FEC_ENABLE) = ", (REG_060)
REG_080= apb_read_reg_984_DPTX(0x080,int(Port), Device_RX )
print "REG_080 (TRANSMITTER_OUTPUT_ENABLE) = ", (REG_080)
REG_084= apb_read_reg_984_DPTX(0x084,int(Port), Device_RX )
print "REG_084 (VIDEO_STREAM_ENABLE) = ", (REG_084)
REG_088= apb_read_reg_984_DPTX(0x088,int(Port), Device_RX )
print "REG_088 (SECONDARY_STREAM_ENABLE) = ", (REG_088)
REG_08C= apb_read_reg_984_DPTX(0x08C,int(Port), Device_RX )
print "REG_088 (SECONDARY_DATA_WINDOW) = ", (REG_08C)
REG_090= apb_read_reg_984_DPTX(0x090,int(Port), Device_RX )
print "REG_090 (SOFT_RESET) = ", (REG_090)
REG_094= apb_read_reg_984_DPTX(0x094,int(Port), Device_RX )
print "REG_094 (INPUT_SOURCE_ENABLE) = ", (REG_094)
REG_098= apb_read_reg_984_DPTX(0x098,int(Port), Device_RX )
print "REG_098 (FEC_ENABLE) = ", (REG_098)
REG_0C0= apb_read_reg_984_DPTX(0x0C0,int(Port), Device_RX )
print "REG_0C0 (ORCE_SCRAMBLER_RESET) = ", (REG_0C0)
REG_0C4= apb_read_reg_984_DPTX(0x0C4,int(Port), Device_RX )
print "REG_0C4 (USER_CONTROL_STATUS) = ", (REG_0C4)
REG_0C8= apb_read_reg_984_DPTX(0x0C8,int(Port), Device_RX )
print "REG_0C8 (USER_DATA_CONTROL) = ", (REG_0C8)
REG_0F8= apb_read_reg_984_DPTX(0x0F8,int(Port), Device_RX )
print "REG_0F8 (CORE_CAPABILITIES) = ", (REG_0F8)
REG_0FC= apb_read_reg_984_DPTX(0x0FC,int(Port), Device_RX )
print "REG_0FC (CORE_ID) = ", (REG_0FC)
REG_100= apb_read_reg_984_DPTX(0x100,int(Port), Device_RX )
print "REG_100 (AUX_COMMAND) = ", (REG_100)
REG_104= apb_read_reg_984_DPTX(0x104,int(Port), Device_RX )
print "REG_104 (AUX_WRITE_FIFO) = ", (REG_104)
REG_108= apb_read_reg_984_DPTX(0x108,int(Port), Device_RX )
print "REG_108 (AUX_ADDRESS) = ", (REG_108)
REG_10C= apb_read_reg_984_DPTX(0x10C,int(Port), Device_RX )
print "REG_10C (AUX_CLOCK_DIVIDER) = ", (REG_10C)
REG_110= apb_read_reg_984_DPTX(0x110,int(Port), Device_RX )
print "REG_110 (AUX_REPLY_TIMEOUT_INTERVAL) = ", (REG_110)
REG_128= apb_read_reg_984_DPTX(0x128,int(Port), Device_RX )
print "REG_128 (SINK_HPD_STATE) = ", (REG_128)
REG_130= apb_read_reg_984_DPTX(0x130,int(Port), Device_RX )
print "REG_130 (INTERRUPT_STATE) = ", (REG_130)
REG_134= apb_read_reg_984_DPTX(0x134,int(Port), Device_RX )
print "REG_134 (AUX_REPLY_DATA) = ", (REG_134)
REG_138= apb_read_reg_984_DPTX(0x138,int(Port), Device_RX )
print "REG_138 (AUX_REPLY_CODE) = ", (REG_138)
REG_13C= apb_read_reg_984_DPTX(0x13C,int(Port), Device_RX )
print "REG_13C (AUX_REPLY_COUNT) = ", (REG_13C)
REG_140= apb_read_reg_984_DPTX(0x140,int(Port), Device_RX )
print "REG_140 (INTERRUPT_STATUS) = ", (REG_140)
REG_144= apb_read_reg_984_DPTX(0x144,int(Port), Device_RX )
print "REG_144 (INTERRUPT_MASK) = ", (REG_144)
REG_148= apb_read_reg_984_DPTX(0x148,int(Port), Device_RX )
print "REG_148 (REPLY_DATA_COUNT) = ", (REG_148)
REG_14C= apb_read_reg_984_DPTX(0x14C,int(Port), Device_RX )
print "REG_14C (AUX_STATUS) = ", (REG_14C)
REG_150= apb_read_reg_984_DPTX(0x150,int(Port), Device_RX )
print "REG_150 (AUX_REPLY_CLOCK_WIDTH) = ", (REG_150)
REG_154= apb_read_reg_984_DPTX(0x154,int(Port), Device_RX )
print "REG_154 (AUX_WAKE_ACK_DETECTED) = ", (REG_154)
REG_158= apb_read_reg_984_DPTX(0x158,int(Port), Device_RX )
print "REG_158 (GP_HOST_TIMER) = ", (REG_158)
print ""
print "STREAM: ", Stream, " Register Read: "
print ""
REG_0180= apb_read_reg_984_DPTX(0x180+Offset,int(Port), Device_RX )
print "REG_0180 (MAIN_STREAM_HTOTAL) = ", (REG_0180)
REG_0184= apb_read_reg_984_DPTX(0x184+Offset,int(Port), Device_RX )
print "REG_0184 (MAIN_STREAM_VTOTAL) = ", (REG_0184)
REG_0188= apb_read_reg_984_DPTX(0x188+Offset,int(Port), Device_RX )
print "REG_0188 (MAIN_STREAM_POLARITY) = ", (REG_0188)
REG_018C= apb_read_reg_984_DPTX(0x18C+Offset,int(Port), Device_RX )
print "REG_018C (MAIN_STREAM_HSWIDTH) = ", (REG_018C)
REG_0190= apb_read_reg_984_DPTX(0x190+Offset,int(Port), Device_RX )
print "REG_0190 (MAIN_STREAM_VSWIDTH) = ", (REG_0190)
REG_0194= apb_read_reg_984_DPTX(0x194+Offset,int(Port), Device_RX )
print "REG_0194 (MAIN_STREAM_HRES) = ", (REG_0194)
REG_0198= apb_read_reg_984_DPTX(0x198+Offset,int(Port), Device_RX )
print "REG_0198 (MAIN_STREAM_VRES) = ", (REG_0198)
REG_019C= apb_read_reg_984_DPTX(0x19C+Offset,int(Port), Device_RX )
print "REG_019C (MAIN_STREAM_HSTART) = ", (REG_019C)
REG_01A0= apb_read_reg_984_DPTX(0x1A0+Offset,int(Port), Device_RX )
print "REG_01A0 (MAIN_STREAM_VSTART) = ", (REG_01A0)
REG_01A4= apb_read_reg_984_DPTX(0x1A4+Offset,int(Port), Device_RX )
print "REG_01A4 (MAIN_STREAM_MISC0) = ", (REG_01A4)
REG_01A8= apb_read_reg_984_DPTX(0x1A8+Offset,int(Port), Device_RX )
print "REG_01A8 (MAIN_STREAM_MISC1) = ", (REG_01A8)
REG_01AC= apb_read_reg_984_DPTX(0x1AC+Offset,int(Port), Device_RX )
print "REG_01AC (MVID) = ", (REG_01AC)
REG_01B0= apb_read_reg_984_DPTX(0x1B0+Offset,int(Port), Device_RX )
print "REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = ", (REG_01B0)
REG_01B4= apb_read_reg_984_DPTX(0x1B4+Offset,int(Port), Device_RX )
print "REG_01B4 (NVID) = ", (REG_01B4)
REG_01B8= apb_read_reg_984_DPTX(0x1B8+Offset,int(Port), Device_RX )
print "REG_01B8 (USER_PIXEL_COUNT) = ", (REG_01B8)
REG_01BC= apb_read_reg_984_DPTX(0x1BC+Offset,int(Port), Device_RX )
print "REG_01BC (USER_DATA_COUNT) = ", (REG_01BC)
REG_01C0= apb_read_reg_984_DPTX(0x1C0+Offset,int(Port), Device_RX )
print "REG_01C0 (MAIN_STREAM_INTERLACED) = ", (REG_01C0)
REG_01C4= apb_read_reg_984_DPTX(0x1C4+Offset,int(Port), Device_RX )
print "REG_01C4 (USER_SYNC_POLARITY) = ", (REG_01C4)
REG_01C8= apb_read_reg_984_DPTX(0x1C8+Offset,int(Port), Device_RX )
print "REG_01C8 (USER_CONTROL) = ", (REG_01C8)
REG_01CC= apb_read_reg_984_DPTX(0x1CC+Offset,int(Port), Device_RX )
print "REG_01CC (USER_CONTROL) = ", (REG_01CC)
REG_0500= apb_read_reg_984_DPTX(0x500,int(Port), Device_RX )
print "REG_0500 (MST_ENABLE) = ", (REG_0500)
REG_0504= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0504 (MST_PID_TABLE_INDEX) = ", (REG_0504)
REG_0508= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0508 (MST_PID_TABLE_ENTRY) = ", (REG_0508)
REG_050C= apb_read_reg_984_DPTX(0x50C,int(Port), Device_RX )
print "REG_050C (SST_SOURCE_SELECT) = ", (REG_050C)
REG_0510= apb_read_reg_984_DPTX(0x510,int(Port), Device_RX )
print "REG_0510 (MST_ALLOCATION_TRIGGER) = ", (REG_0510)
REG_0514= apb_read_reg_984_DPTX(0x514,int(Port), Device_RX )
print "REG_0514 (MST_PID_TABLE_SELECT) = ", (REG_0514)
REG_0518= apb_read_reg_984_DPTX(0x518,int(Port), Device_RX )
print "REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = ", (REG_0518)
REG_0520= apb_read_reg_984_DPTX(0x520,int(Port), Device_RX )
print "REG_0520 (MST_ACTIVE) = ", (REG_0520)
REG_0524= apb_read_reg_984_DPTX(0x524,int(Port), Device_RX )
print "REG_0524 (MST_LINK_FRAME_COUNT) = ", (REG_0524)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
# Port = 1
# print ""
# print "PORT ",Port," DPTX APB Dump: Main Stream Attributes"
# print ""
# REG_000= apb_read_reg(0x000,int(Port), Device_RX )
# print "REG_000 (LINK_BW_SET) = ", (REG_000)
# REG_004= apb_read_reg(0x004,int(Port), Device_RX )
# print "REG_004 (LANE_COUNT_SET) = ", (REG_004)
# REG_008= apb_read_reg(0x008,int(Port), Device_RX )
# print "REG_008 (ENHANCED_FRAME_EN) = ", (REG_008)
# REG_00C= apb_read_reg(0x00C,int(Port), Device_RX )
# print "REG_00C (TRAINING_PATTERN_SET) = ", (REG_00C)
# REG_010= apb_read_reg(0x010,int(Port), Device_RX )
# print "REG_010 (LINK_QUAL_PATTERN_SET) = ", (REG_010)
# REG_014= apb_read_reg(0x014,int(Port), Device_RX )
# print "REG_014 (SCRAMBLING_DISABLE) = ", (REG_014)
# REG_018= apb_read_reg(0x018,int(Port), Device_RX )
# print "REG_018 (DOWNSPREAD_CTRL) = ", (REG_018)
# REG_01C= apb_read_reg(0x01C,int(Port), Device_RX )
# print "REG_01C (EDP_CAPABILITY_CONFIG) = ", (REG_01C)
# REG_020= apb_read_reg(0x020,int(Port), Device_RX )
# print "REG_020 (HBR2_COMPLIANCE_SCRAMBLER_RESET) = ", (REG_020)
# REG_024= apb_read_reg(0x024,int(Port), Device_RX )
# print "REG_024 (DISPLAYPORT_VERSION) = ", (REG_024)
# REG_028= apb_read_reg(0x028,int(Port), Device_RX )
# print "REG_024 (PHY_POWER_STATE) = ", (REG_028)
# REG_02C= apb_read_reg(0x02C,int(Port), Device_RX )
# print "REG_02C (LANE_REMAP_CONTROL) = ", (REG_02C)
# REG_030= apb_read_reg(0x030,int(Port), Device_RX )
# print "REG_030 (CUSTOM_80BIT_PATTERN_0) = ", (REG_030)
# REG_034= apb_read_reg(0x034,int(Port), Device_RX )
# print "REG_034 (CUSTOM_80BIT_PATTERN_1) = ", (REG_034)
# REG_038= apb_read_reg(0x038,int(Port), Device_RX )
# print "REG_038 (CUSTOM_80BIT_PATTERN_2) = ", (REG_038)
# REG_060= apb_read_reg(0x060,int(Port), Device_RX )
# print "REG_060 (FEC_ENABLE) = ", (REG_060)
# REG_080= apb_read_reg(0x080,int(Port), Device_RX )
# print "REG_080 (TRANSMITTER_OUTPUT_ENABLE) = ", (REG_080)
# REG_084= apb_read_reg(0x084,int(Port), Device_RX )
# print "REG_084 (VIDEO_STREAM_ENABLE) = ", (REG_084)
# REG_088= apb_read_reg(0x088,int(Port), Device_RX )
# print "REG_088 (SECONDARY_STREAM_ENABLE) = ", (REG_088)
# REG_08C= apb_read_reg(0x08C,int(Port), Device_RX )
# print "REG_088 (SECONDARY_DATA_WINDOW) = ", (REG_08C)
# REG_090= apb_read_reg(0x090,int(Port), Device_RX )
# print "REG_090 (SOFT_RESET) = ", (REG_090)
# REG_094= apb_read_reg(0x094,int(Port), Device_RX )
# print "REG_094 (INPUT_SOURCE_ENABLE) = ", (REG_094)
# REG_098= apb_read_reg(0x098,int(Port), Device_RX )
# print "REG_098 (FEC_ENABLE) = ", (REG_098)
# REG_0C0= apb_read_reg(0x0C0,int(Port), Device_RX )
# print "REG_0C0 (ORCE_SCRAMBLER_RESET) = ", (REG_0C0)
# REG_0C4= apb_read_reg(0x0C4,int(Port), Device_RX )
# print "REG_0C4 (USER_CONTROL_STATUS) = ", (REG_0C4)
# REG_0C8= apb_read_reg(0x0C8,int(Port), Device_RX )
# print "REG_0C8 (USER_DATA_CONTROL) = ", (REG_0C8)
# REG_0F8= apb_read_reg(0x0F8,int(Port), Device_RX )
# print "REG_0F8 (CORE_CAPABILITIES) = ", (REG_0F8)
# REG_0FC= apb_read_reg(0x0FC,int(Port), Device_RX )
# print "REG_0FC (CORE_ID) = ", (REG_0FC)
# REG_100= apb_read_reg(0x100,int(Port), Device_RX )
# print "REG_100 (AUX_COMMAND) = ", (REG_100)
# REG_104= apb_read_reg(0x104,int(Port), Device_RX )
# print "REG_104 (AUX_WRITE_FIFO) = ", (REG_104)
# REG_108= apb_read_reg(0x108,int(Port), Device_RX )
# print "REG_108 (AUX_ADDRESS) = ", (REG_108)
# REG_10C= apb_read_reg(0x10C,int(Port), Device_RX )
# print "REG_10C (AUX_CLOCK_DIVIDER) = ", (REG_10C)
# REG_110= apb_read_reg(0x110,int(Port), Device_RX )
# print "REG_110 (AUX_REPLY_TIMEOUT_INTERVAL) = ", (REG_110)
# REG_128= apb_read_reg(0x128,int(Port), Device_RX )
# print "REG_128 (SINK_HPD_STATE) = ", (REG_128)
# REG_130= apb_read_reg(0x130,int(Port), Device_RX )
# print "REG_130 (INTERRUPT_STATE) = ", (REG_130)
# REG_134= apb_read_reg(0x134,int(Port), Device_RX )
# print "REG_134 (AUX_REPLY_DATA) = ", (REG_134)
# REG_138= apb_read_reg(0x138,int(Port), Device_RX )
# print "REG_138 (AUX_REPLY_CODE) = ", (REG_138)
# REG_13C= apb_read_reg(0x13C,int(Port), Device_RX )
# print "REG_13C (AUX_REPLY_COUNT) = ", (REG_13C)
# REG_140= apb_read_reg(0x140,int(Port), Device_RX )
# print "REG_140 (INTERRUPT_STATUS) = ", (REG_140)
# REG_144= apb_read_reg(0x144,int(Port), Device_RX )
# print "REG_144 (INTERRUPT_MASK) = ", (REG_144)
# REG_148= apb_read_reg(0x148,int(Port), Device_RX )
# print "REG_148 (REPLY_DATA_COUNT) = ", (REG_148)
# REG_14C= apb_read_reg(0x14C,int(Port), Device_RX )
# print "REG_14C (AUX_STATUS) = ", (REG_14C)
# REG_150= apb_read_reg(0x150,int(Port), Device_RX )
# print "REG_150 (AUX_REPLY_CLOCK_WIDTH) = ", (REG_150)
# REG_154= apb_read_reg(0x154,int(Port), Device_RX )
# print "REG_154 (AUX_WAKE_ACK_DETECTED) = ", (REG_154)
# REG_158= apb_read_reg(0x158,int(Port), Device_RX )
# print "REG_158 (GP_HOST_TIMER) = ", (REG_158)
print ""
print "STREAM: ", Stream, " Register Read: "
print ""
REG_0180= apb_read_reg_984_DPTX(0x180+Offset,int(Port), Device_RX )
print "REG_0180 (MAIN_STREAM_HTOTAL) = ", (REG_0180)
REG_0184= apb_read_reg_984_DPTX(0x184+Offset,int(Port), Device_RX )
print "REG_0184 (MAIN_STREAM_VTOTAL) = ", (REG_0184)
REG_0188= apb_read_reg_984_DPTX(0x188+Offset,int(Port), Device_RX )
print "REG_0188 (MAIN_STREAM_POLARITY) = ", (REG_0188)
REG_018C= apb_read_reg_984_DPTX(0x18C+Offset,int(Port), Device_RX )
print "REG_018C (MAIN_STREAM_HSWIDTH) = ", (REG_018C)
REG_0190= apb_read_reg_984_DPTX(0x190+Offset,int(Port), Device_RX )
print "REG_0190 (MAIN_STREAM_VSWIDTH) = ", (REG_0190)
REG_0194= apb_read_reg_984_DPTX(0x194+Offset,int(Port), Device_RX )
print "REG_0194 (MAIN_STREAM_HRES) = ", (REG_0194)
REG_0198= apb_read_reg_984_DPTX(0x198+Offset,int(Port), Device_RX )
print "REG_0198 (MAIN_STREAM_VRES) = ", (REG_0198)
REG_019C= apb_read_reg_984_DPTX(0x19C+Offset,int(Port), Device_RX )
print "REG_019C (MAIN_STREAM_HSTART) = ", (REG_019C)
REG_01A0= apb_read_reg_984_DPTX(0x1A0+Offset,int(Port), Device_RX )
print "REG_01A0 (MAIN_STREAM_VSTART) = ", (REG_01A0)
REG_01A4= apb_read_reg_984_DPTX(0x1A4+Offset,int(Port), Device_RX )
print "REG_01A4 (MAIN_STREAM_MISC0) = ", (REG_01A4)
REG_01A8= apb_read_reg_984_DPTX(0x1A8+Offset,int(Port), Device_RX )
print "REG_01A8 (MAIN_STREAM_MISC1) = ", (REG_01A8)
REG_01AC= apb_read_reg_984_DPTX(0x1AC+Offset,int(Port), Device_RX )
print "REG_01AC (MVID) = ", (REG_01AC)
REG_01B0= apb_read_reg_984_DPTX(0x1B0+Offset,int(Port), Device_RX )
print "REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = ", (REG_01B0)
REG_01B4= apb_read_reg_984_DPTX(0x1B4+Offset,int(Port), Device_RX )
print "REG_01B4 (NVID) = ", (REG_01B4)
REG_01B8= apb_read_reg_984_DPTX(0x1B8+Offset,int(Port), Device_RX )
print "REG_01B8 (USER_PIXEL_COUNT) = ", (REG_01B8)
REG_01BC= apb_read_reg_984_DPTX(0x1BC+Offset,int(Port), Device_RX )
print "REG_01BC (USER_DATA_COUNT) = ", (REG_01BC)
REG_01C0= apb_read_reg_984_DPTX(0x1C0+Offset,int(Port), Device_RX )
print "REG_01C0 (MAIN_STREAM_INTERLACED) = ", (REG_01C0)
REG_01C4= apb_read_reg_984_DPTX(0x1C4+Offset,int(Port), Device_RX )
print "REG_01C4 (USER_SYNC_POLARITY) = ", (REG_01C4)
REG_01C8= apb_read_reg_984_DPTX(0x1C8+Offset,int(Port), Device_RX )
print "REG_01C8 (USER_CONTROL) = ", (REG_01C8)
REG_0500= apb_read_reg_984_DPTX(0x500,int(Port), Device_RX )
print "REG_0500 (MST_ENABLE) = ", (REG_0500)
REG_0504= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0504 (MST_PID_TABLE_INDEX) = ", (REG_0504)
REG_0508= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0508 (MST_PID_TABLE_ENTRY) = ", (REG_0508)
REG_050C= apb_read_reg_984_DPTX(0x50C,int(Port), Device_RX )
print "REG_050C (SST_SOURCE_SELECT) = ", (REG_050C)
REG_0510= apb_read_reg_984_DPTX(0x510,int(Port), Device_RX )
print "REG_0510 (MST_ALLOCATION_TRIGGER) = ", (REG_0510)
REG_0514= apb_read_reg_984_DPTX(0x514,int(Port), Device_RX )
print "REG_0514 (MST_PID_TABLE_SELECT) = ", (REG_0514)
REG_0518= apb_read_reg_984_DPTX(0x518,int(Port), Device_RX )
print "REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = ", (REG_0518)
REG_0520= apb_read_reg_984_DPTX(0x520,int(Port), Device_RX )
print "REG_0520 (MST_ACTIVE) = ", (REG_0520)
REG_0524= apb_read_reg_984_DPTX(0x524,int(Port), Device_RX )
print "REG_0524 (MST_LINK_FRAME_COUNT) = ", (REG_0524)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
def Ux983_APBs(var):
for var in range (0x00,138):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (256,336):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (448,457):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (512,589+1):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (640,760+1):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
def HH983_APBs():
print("Receiver core config")
print("0x0 (reciver core enable) = " + hex(apb_read_reg(serAddr,0x0)))
print("0x018 (misc_config) = " + hex(apb_read_reg(serAddr,0x018)))
print("0x024 (request_error_count) = " + hex(apb_read_reg(serAddr,0x024)))
print("0x028 (request_count) = " + hex(apb_read_reg(serAddr,0x028)))
print("0x070 (max_lane_count) = " + hex(apb_read_reg(serAddr,0x070)))
print("0x074 (max_link_rate) = " + hex(apb_read_reg(serAddr,0x074)))
print("")
print("PHY config and status")
print("0x208 (phy_status) = " + hex(apb_read_reg(serAddr,0x208)))
print("0x214 (min_voltage_swing) = " + hex(apb_read_reg(serAddr,0x214)))
print("0x218 (min_pre_emphasis) = " + hex(apb_read_reg(serAddr,0x218)))
print("0x208 (phy_status) = " + hex(apb_read_reg(serAddr,0x208)))
print("")
print("DPCD config space")
print("0x400 (LANE01_status) = " + hex(apb_read_reg(serAddr,0x400)))
print("0x404 (LANE23_status) = " + hex(apb_read_reg(serAddr,0x404)))
print("---MSA Video Timings----")
print("H Res: ", apb_read_reg(serAddr,0x500))
print("H Pol: ", apb_read_reg(serAddr,0x504))
hsync = apb_read_reg(serAddr,0x508)
print("H Sync: ", apb_read_reg(serAddr,0x508))
print("H Back Porch: ", apb_read_reg(serAddr,0x50C) - hsync)
print("H Total: ", apb_read_reg(serAddr,0x510))
print("V Res: ", apb_read_reg(serAddr,0x514))
print("V Pol: ", apb_read_reg(serAddr,0x518))
v_sync = apb_read_reg(serAddr,0x51c)
print("V Sync Width: ", v_sync)
print("V Back Porch: ", apb_read_reg(serAddr,0x520) - v_sync)
print("V Total: ", apb_read_reg(serAddr,0x524))
print(" ")
print("MSA MISC0: ", apb_read_reg(serAddr,0x528))
print("MSA_MISC1: ", apb_read_reg(serAddr,0x52C))
print("MSA_MVID: ", hex(apb_read_reg(serAddr,0x530)))
print("MSA_NVID: ", hex(apb_read_reg(serAddr,0x534)))
print("MSA_VBID: ", hex(apb_read_reg(serAddr,0x538)))
print("MSA Updated", apb_read_reg(serAddr,0x544))
print("")
print("HDCP Config")
print("0x600 (HDCP_enable) = " + hex(apb_read_reg(serAddr,0x600)))
print("0x604 (HDCP_mode_select) = " + hex(apb_read_reg(serAddr,0x604)))
# print("0x608 (HDCP_KS_31_0) = " + hex(apb_read_reg(serAddr,0x608)))
# print("0x60C (HDCP_KS_63_32) = " + hex(apb_read_reg(serAddr,0x60C)))
# print("0x610 (HDCP_KM_31_0) = " + hex(apb_read_reg(serAddr,0x610)))
# print("0x614 (HDCP_KM_55_32) = " + hex(apb_read_reg(serAddr,0x614)))
print("0x618 (HDCP_AN_31_0) = " + hex(apb_read_reg(serAddr,0x618)))
print("0x61C (HDCP_AN_63_32) = " + hex(apb_read_reg(serAddr,0x61C)))
print("0x624 (HDCP_authentication_in_progress) = " + hex(apb_read_reg(serAddr,0x624)))
print("0x628 (HDCP_status) = " + hex(apb_read_reg(serAddr,0x628)))
print("0x62C (HDCP_CIPHER_CONTROL) = " + hex(apb_read_reg(serAddr,0x62C)))
print("0x630 (HDCP_AKSV_31_0) = " + hex(apb_read_reg(serAddr,0x630)))
print("0x634 (HDCP_AKSV_63_32) = " + hex(apb_read_reg(serAddr,0x634)))
print("0x638 (HDCP_HW_BKSV_31_0) = " + hex(apb_read_reg(serAddr,0x638)))
print("0x63C (HDCP_HW_BKSV_63_32) = " + hex(apb_read_reg(serAddr,0x63C)))
print("0x650 (HDCP_REPEATER) = " + hex(apb_read_reg(serAddr,0x650)))
print("0x654 (HDCP_stream_cipher_enable) = " + hex(apb_read_reg(serAddr,0x654)))
print("0x658 (HDCP_MO_31_0) = " + hex(apb_read_reg(serAddr,0x658)))
print("0x65C (HDCP_MO_63_32) = " + hex(apb_read_reg(serAddr,0x65C)))
print("0x660 (HDCP_AES_INPUT_SELECT) = " + hex(apb_read_reg(serAddr,0x660)))
print("0x664 (HDCP_AES_COUNTER_DISABLE) = " + hex(apb_read_reg(serAddr,0x664)))
print("0x668 (HDCP_AES_COUNTER_ADVANCE) = " + hex(apb_read_reg(serAddr,0x668)))
print("0x66C (HDCP_ENCRYPTION_CONTROL_FIELD_31_0) = " + hex(apb_read_reg(serAddr,0x66C)))
print("0x670 (HDCP_ENCRYPTION_CONTROL_FIELD_63_32) = " + hex(apb_read_reg(serAddr,0x670)))
print("0x678 (HDCP_RN_31_0) = " + hex(apb_read_reg(serAddr,0x678)))
print("0x67C (HDCP_RN_63_32) = " + hex(apb_read_reg(serAddr,0x67C)))
print("0x684 (HDCP_RNG_CIPHER_AN_31_0) = " + hex(apb_read_reg(serAddr,0x684)))
print("0x688 (HDCP_RNG_CIPHER_AN_63_32) = " + hex(apb_read_reg(serAddr,0x688)))
print("0x68C (HDCP_HOST_TIMER) = " + hex(apb_read_reg(serAddr,0x68C)))
print("0x690 (HDCP_encryption_active) = " + hex(apb_read_reg(serAddr,0x690)))
print("0x694 (HDCP_link_integrity_failure) = " + hex(apb_read_reg(serAddr,0x694)))
print("0x698 (HDCP_content_type_select_31_0) = " + hex(apb_read_reg(serAddr,0x698)))
print("0x69C (HDCP_content_type_select_63_32) = " + hex(apb_read_reg(serAddr,0x69C)))
def Ux948_Res_dump(desAlias0):
time.sleep(1)
board.WriteI2C(desAlias0,0x68,0x19) # H active High monitor
Hhigh = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x09) # H active Low monitor
Hlow = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x39) # V active High monitor
Vhigh = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x29) # V active Low monitor
Vlow = board.ReadI2C(desAlias0, 0x69, 1)
mask = int('00111111',2)
hlowmask = Hlow & mask
hhighmask = Hhigh & mask
vlowmask = Vlow & mask
vhighmask = Vhigh & mask
hhighmask = hhighmask << 6
vhighmask = vhighmask << 6
Hactive = hhighmask | hlowmask
Vactive = vhighmask | vlowmask
print Hactive ,"x", Vactive ,",", #print out detected Dimensions
def Ux98x_SERDES_Full_Diagnostics():
time.sleep(0.1)
if SER == "HH983" or SER == "Ux983" or SER == "Ux943A":
board.WriteI2C(serAddr, 0x7, 0x88) # Enable I2C Passthrough for FPD4 98x SER
if SER == "Hx94x":
board.WriteI2C(serAddr, 0x3, 0xDA) # Enable I2C Passthrough for FPD4 98x SER
if SER == "Ux94x":
print"Ux94x Statuses"
for x in range(20):
print"Device_ID = ", hex(board.ReadI2C(serAddr, 0x0)), ",",
print"GENERAL_STATUS = ", hex(board.ReadI2C(serAddr, 0xC))
# Clear CRC Erorr"
Reg_4 = board.ReadI2C(serAddr, 0x4)
Reg_4_mask = Reg_4 | 0x20
board.WriteI2C(serAddr, 0x4, Reg_4_mask) # CRC Error Reset
Reg_4 = board.ReadI2C(serAddr, 0x4)
Reg_4_unmask = Reg_4 & 0xDF
board.WriteI2C(serAddr, 0x4, Reg_4_unmask) # CRC Error Reset Clear
for x in range(20):
print"CRC_0xA = ", hex(board.ReadI2C(serAddr, 0xA)), ",",
print"CRC_0xB = ", hex(board.ReadI2C(serAddr, 0xB))
if DES == "Ux948":
print "Ux948 Statuses"
for x in range(20):
print"GENERAL_STATUS = ", hex(board.ReadI2C(desAlias0, 0x1C)), ",",
print"DUAL_RX_CTL = ", hex(board.ReadI2C(desAlias0, 0x34)), ",",
print"Mode_Sel = ", hex(board.ReadI2C(desAlias0, 0x37)), ",",
Ux948_Res_dump(desAlias0)
print"FPD_TX_MODE = ", hex(board.ReadI2C(desAlias0, 0x49))
if SER == "HH983" or SER == "Ux983" or SER == "Ux943A" or SER == "Ux981":
print"----------------------------------"
print("Lock / Link Status")
for x in range(10):
print"Ser Reg 0xC = ", hex(board.ReadI2C(serAddr, 0xC, 1)), ",",
print"Des Reg 0x53 = ", hex(board.ReadI2C(desAlias0, 0x53, 1)), ",",
print"Des Reg 0x54 = ", hex(board.ReadI2C(desAlias0, 0x54, 1)), ",",
board.WriteI2C(serAddr, 0x40, 18 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x4E)
print"Des Reg 0x4E = ", hex(board.ReadI2C(desAlias0, 0x42))
if VP and SER == "HH983" or SER == "Ux983" or SER == "Ux943A" or SER == "Ux981":
print "----------------------------------"
print ("VP Status")
for x in range(10):
board.WriteI2C(serAddr, 0x40, 0x33)
board.WriteI2C(serAddr, 0x41, 0x30)
print "VP_STATUS:", board.ReadI2C(serAddr, 0x42, 1), ",",
board.WriteI2C(serAddr, 0x40, 0x33)
board.WriteI2C(serAddr, 0x41, 0x31)
print "VP_INTERRUPTS:", board.ReadI2C(serAddr, 0x42, 1)
if SER == "Ux981":
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0xe)
read_val = board.ReadI2C(serAddr, 0x42)
print"INTR_STS_DPHY = 0x", hex(read_val)
print"[1] IS_DPHY_LANE_SYNC_ERROR", (read_val & 0x2) >> 1
print"[0] IS_DPHY_LANE_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0xf)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_STATUS = 0x", hex(read_val)
print"[4] C_LANE_ACTIVE", (read_val & 0x10) >> 4
print"[3] D_LANE3_ACTIVE", (read_val & 0x8) >> 3
print"[2] D_LANE2_ACTIVE", (read_val & 0x4) >> 2
print"[1] D_LANE1_ACTIVE", (read_val & 0x2) >> 1
print"[0] D_LANE0_ACTIVE", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x10)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE0 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x11)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE1 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x12)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE2 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x13)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE3 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x14)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_ERR_CLK_LANE = 0x", hex(read_val)
print
"[2] CNTRL_ERR_HSRQST_CLK", (read_val & 0x4) >> 2
print"[0] HS RX TO ERROR_CLK", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x15)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_SYNC_STS = 0x", read_val
print"[3] DLANE3_SYNC_STS", (read_val & 0x8) >> 3
print"[2] DLANE2_SYNC_STS", (read_val & 0x4) >> 2
print"[1] DLANE1_SYNC_STS", (read_val & 0x2) >> 1
print"[0] DLANE0_SYNC_STS", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x23)
read_val = board.ReadI2C(serAddr, 0x42)
print"INTR_STS_DSI_ERR = 0x", read_val
print"[7] IS_INV_TYPE_GLW_ERR", (read_val & 0x80) >> 7
print"[6] IS_INV_WC_GLW_ERR", (read_val & 0x40) >> 6
print"[5] IS_INV_LEN_ERR", (read_val & 0x20) >> 5
print"[4] IS_INV_VC_ERR", (read_val & 0x10) >> 4
print"[3] IS_INV_DT_ERR", (read_val & 0x8) >> 3
print"[2] IS_CHECKSUM_ERR", (read_val & 0x4) >> 2
print"[1] IS_ECC_MULTI_ERR", (read_val & 0x2) >> 1
print"[0] IS_ECC_SINGLE_ERR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x2a)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DSI_VC_DTYPE = 0x", read_val
if SER == "HH983" and DPRX:
print "----------------------------------"
print ("DPRX Status")
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [19:16]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [15:8]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [7:0]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F0, 0x02) # Read Strobe
LINK_BW_SET = apb_read_reg(serAddr, 0x4F8)
if LINK_BW_SET == 0:
print "No Link Speed Detected"
elif LINK_BW_SET == 0x06:
print "Link Rate = 1.62Gbps/lane"
elif LINK_BW_SET == 0x0A:
print "Link Rate = 2.7Gbps/lane"
elif LINK_BW_SET == 0x14:
print "Link Rate = 5.4Gbps/lane"
elif LINK_BW_SET == 0x1E:
print "Link Rate = 8.1Gbps/lane"
# Lane Count Check via Direct DPCD Access
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [19:16]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [15:8]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [7:0]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F0, 0x02) # Read Strobe
LANE_COUNT_SET = apb_read_reg(serAddr, 0x4F8)
if LANE_COUNT_SET & 0x1F == 0:
print "No Active DP Lanes Detected"
elif LANE_COUNT_SET & 0x1F == 0x01:
print "One DP Lane"
elif LANE_COUNT_SET & 0x1F == 0x02:
print "Two DP Lanes"
elif LANE_COUNT_SET & 0x1F == 0x04:
print "4 DP Lanes"
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
if SER == "Ux983" or SER == "Ux943A":
print "----------------------------------"
print ("DPRX Status")
print apb_read_reg(serAddr, 0x400) * 27, ("Rate")
print apb_read_reg(serAddr, 0x404), ("Lanes")
print hex(apb_read_reg(serAddr, 0x43c))
print hex(apb_read_reg(serAddr, 0x440))
print hex(apb_read_reg(serAddr, 0x18))
print hex(apb_read_reg(serAddr, 0x48C))
if apb_read_reg(serAddr, 0x48C) == 0:
print "Video source is set to SST mode"
if apb_read_reg(serAddr, 0x48C) == 1:
print "Video source is set to MST mode"
print "----------------------------------"
if SER == "Ux983" or SER == "Ux943A" and SER_MSAs:
if MST == 0:
apb_write_reg(serAddr, 0x540, 0x0)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
else:
print "----------------------------------"
print("## MST0")
apb_write_reg(serAddr, 0x540, 0x0)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
print("## MST1")
apb_write_reg(serAddr, 0x540, 0x1)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
if DES == "Ux984" or DES == "HH984":
if DPTX:
print "----------------------------------"
print "DPTX Status"
## AUX DP/eDP Train Status Read 0x202 and 0x203
board.WriteI2C(desAlias0, 0x40, 0x2D)
board.WriteI2C(desAlias0, 0x41, 0x93)
print "Page11 reg 0x93 = ", hex(board.ReadI2C(desAlias0, 0x42, 1))
for dpcdAddr in range(0x202, 0x204):
apb_write_reg(desAlias0, 0x13C, 0x1) # Clear AUX_Reply Count
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
AUX_REPLY_COUNT = apb_read_reg(desAlias0, 0x13C)
# print "AUX Reply Count:", AUX_REPLY_COUNT
if AUX_REPLY_COUNT == 1:
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
else:
print "No AUX Reply Detected"
apb_write_reg(desAlias0, 0x108, 0x202) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
apb_write_reg(desAlias0, 0x108, 0x202) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "'DPCD addr " + hex(0x202) + " is " + hex(replyData)
apb_write_reg(desAlias0, 0x108, 0x203) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
apb_write_reg(desAlias0, 0x108, 0x203) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "'DPCD addr " + hex(0x203) + " is " + hex(replyData)
for dpcdAddr in range(0x100, 0x101):
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
if replyData == 10:
print "DPTX = 2.7 Gbps"
if replyData == 6:
print "DPTX = 1.62 Gbps"
if replyData == 20:
print "DPTX = 5.4 Gbps"
if replyData == 30:
print "DPTX = 8.1 Gbps"
for dpcdAddr in range(0x101, 0x102):
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
if replyData == 0x84:
print "DP_Lanes = 4"
print "----------------------------------"
print "Des FIFO = ", hex(apb_read_reg(desAlias0, 0x1CC))
if DTGs:
print "----------------------------------"
print "DTG Port 0 Timing:"
measure = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
board.WriteI2C(desAlias0, 0x40, 0x53)
board.WriteI2C(desAlias0, 0x41, 0x40)
for x in range(0, 16, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42, 1)
Htotal = (measure[0] << 8) | measure[1]
print "Htotal = ", Htotal
Vtotal = (measure[2] << 8) | measure[3]
print "Vtotal = ", Vtotal
Hactive = (measure[4] << 8) | measure[5]
print "Hactive = ", Hactive
Vactive = (measure[6] << 8) | measure[7]
print "Vactive = ", Vactive
Hstart = (measure[8] << 8) | measure[9]
print "Hstart = ", Hstart
Vstart = (measure[10] << 8) | measure[11]
Hsync = (measure[12] << 8) | measure[13]
print "Hsync = ", Hsync
Vsync = (measure[14] << 8) | measure[15]
print "Vsync = ", Vsync
Vback = Vstart - Vsync
print "Vback = ", Vback
Vfront = Vtotal - Vactive - Vsync - Vback
print "Vfront = ", Vfront
if DP0 and DES == "Ux984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX(desAlias0, 0, 1)
print "----------------------------------"
print "Ux984 DPTX APBs"
Ux984_APB_Dump(0,desAlias0)
if DP0 and DES == "HH984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX_HH(desAlias0, 0, 1)
if DP1 and DES == "Ux984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX(desAlias0, 1, 1)
if DP1 and DES == "HH984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX_HH(desAlias0, 1, 1)
if DES == "Ux988" :
print "----------------------------------"
print "Ux988 Status"
print "DES_Addr = ", hex(board.ReadI2C(desAlias0, 0x0))
for x in range(10):
# print ("Link and Lock Status")
print "Ser Reg 0xC = ", hex(board.ReadI2C(serAddr, 0xC, 1)), ",",
print "Des Reg 0x53 = ", hex(board.ReadI2C(desAlias0, 0x53, 1)), ",",
print "Des Reg 0x54 = ", hex(board.ReadI2C(desAlias0, 0x54, 1)), ",",
board.WriteI2C(serAddr, 0x40, 18 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x4E)
print "Des Reg 0x4E = ", hex(board.ReadI2C(desAlias0, 0x42))
measure = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
board.WriteI2C(desAlias0, 0x40, 0x53)
board.WriteI2C(desAlias0, 0x41, 0x40)
for x in range(0, 16, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42, 1)
print "----------------------------------"
print "Ux988 DTGs"
Htotal = (measure[0] << 8) | measure[1]
print "Htotal = ", Htotal
Vtotal = (measure[2] << 8) | measure[3]
print "Vtotal = ", Vtotal
Hactive = (measure[4] << 8) | measure[5]
print "Hactive = ", Hactive
Vactive = (measure[6] << 8) | measure[7]
print "Vactive = ", Vactive
Hstart = (measure[8] << 8) | measure[9]
print "Hstart = ", Hstart
Vstart = (measure[10] << 8) | measure[11]
Hsync = (measure[12] << 8) | measure[13]
print "Hsync = ", Hsync
Vsync = (measure[14] << 8) | measure[15]
print "Vsync = ", Vsync
Vback = Vstart - Vsync
print "Vback = ", Vback
Vfront = Vtotal - Vactive - Vsync - Vback
print "Vfront = ", Vfront
board.WriteI2C(desAlias0, 0x41, 0x70)
board.WriteI2C(desAlias0, 0x41, 0xA0)
print "FPD IV Link Layer Timing:"
board.WriteI2C(desAlias0, 0x40, 0x4B)
board.WriteI2C(desAlias0, 0x41, 0x39)
for x in range(0, 12, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42)
Stream0 = (measure[1] << 8) | measure[0]
Stream1 = (measure[3] << 8) | measure[2]
Stream2 = (measure[5] << 8) | measure[4]
Stream3 = (measure[7] << 8) | measure[6]
Stream4 = (measure[9] << 8) | measure[8]
Stream5 = (measure[11] << 8) | measure[10]
print "Stream 0 Hactive = ", Stream0
print "Stream 1 Hactive = ", Stream1
print "Stream 2 Hactive = ", Stream2
print "Stream 3 Hactive = ", Stream3
print "Stream 4 Hactive = ", Stream4
print "Stream 5 Hactive = ", Stream5
if SER == "Ux983":
print "-------------------------"
print "Ux983_APB_dump"
Ux983_APBs(0)
if SER == "HH983":
print "-------------------------"
print "HH983_APB_dump"
HH983_APBs()
Ux98x_SERDES_Full_Diagnostics()
time.sleep(0.1)
## TI Confidential - NDA Restrictions
##
## Copyright 2018 Texas Instruments Incorporated. All rights reserved.
##
## IMPORTANT: Your use of this Software is limited to those specific rights
## granted under the terms of a software license agreement between the user who
## downloaded the software, his/her employer (which must be your employer) and
## Texas Instruments Incorporated (the License). You may not use this Software
## unless you agree to abide by the terms of the License. The License limits your
## use, and you acknowledge, that the Software may not be modified, copied or
## distributed unless embedded on a Texas Instruments microcontroller which is
## integrated into your product. Other than for the foregoing purpose, you may
## not use, reproduce, copy, prepare derivative works of, modify, distribute,
## perform, display or sell this Software and/or its documentation for any
## purpose.
##
## YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
## PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
## INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY, TITLE,
## NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL TEXAS
## INSTRUMENTS OR ITS LICENSORS BE LIABLE OR OBLIGATED UNDER CONTRACT,
## NEGLIGENCE, STRICT LIABILITY, CONTRIBUTION, BREACH OF WARRANTY, OR OTHER LEGAL
## EQUITABLE THEORY ANY DIRECT OR INDIRECT DAMAGES OR EXPENSES INCLUDING BUT NOT
## LIMITED TO ANY INCIDENTAL, SPECIAL, INDIRECT, PUNITIVE OR CONSEQUENTIAL
## DAMAGES, LOST PROFITS OR LOST DATA, COST OF PROCUREMENT OF SUBSTITUTE GOODS,
## TECHNOLOGY, SERVICES, OR ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT
## LIMITED TO ANY DEFENSE THEREOF), OR OTHER SIMILAR COSTS.
##
## Should you have any questions regarding your right to use this Software,
## contact Texas Instruments Incorporated at www.TI.com.
## Debug Script Version 1
import time
#######################User_Input############################
serAddr = 0x18
desAlias0 = 0x58
SER = "Ux983" # Chosse HH983 or Ux983 or Ux943A or Ux981 or Ux94x
DES = "Ux984" # Chosse HH984 or Ux984 or Ux988 or Ux948
MST = 0 # For Ux983 Select 0 for SST and 1 for MST mode
DP0 = 1 # For Ux984 Enable DPTX port0 diagnostics
DP1 = 0 # For Ux984 Enable DPTX port1 diagnostics
##################Keep Always ON#############################
VP = 1 # Enable VP diagnostics
SER_MSAs = 1 # Dump 983 SER MSAs
DTGs = 1 # dump DES DTGs
DPRX = 1 # Enable 983 DPRX diagnostics
DPTX = 1 # Enable 984 DPTX diagnostics
#############################################################
def apb_read_reg(DevAddrRxMain, addr16b):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(DevAddrRxMain, APB_ADR0, addr16b_lsb)
board.WriteI2C(DevAddrRxMain, APB_ADR1, addr16b_msb)
board.WriteI2C(DevAddrRxMain, APB_CTL, 0x03)
apbData0 = board.ReadI2C(DevAddrRxMain, APB_DATA0)
apbData1 = board.ReadI2C(DevAddrRxMain, APB_DATA1)
apbData2 = board.ReadI2C(DevAddrRxMain, APB_DATA2)
apbData3 = board.ReadI2C(DevAddrRxMain, APB_DATA3)
apbData = (apbData3 << 24) | (apbData2 << 16) | (apbData1 << 8) | (apbData0 << 0)
val32bit = apbData
return val32bit
def apb_write_reg(DevAddrRxMain, addr16b, data32b):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(DevAddrRxMain, APB_ADR0, addr16b_lsb)
board.WriteI2C(DevAddrRxMain, APB_ADR1, addr16b_msb)
# print 'data32b', data32b
apbData0 = int((data32b & 0x000000FF) >> 0)
# print 'type', type(apbData0), apbData0
apbData1 = int((data32b & 0x0000FF00) >> 8)
apbData2 = int((data32b & 0x00FF0000) >> 16)
apbData3 = int((data32b & 0xFF000000) >> 24)
board.WriteI2C(DevAddrRxMain, APB_DATA0, apbData0)
board.WriteI2C(DevAddrRxMain, APB_DATA1, apbData1)
board.WriteI2C(DevAddrRxMain, APB_DATA2, apbData2)
board.WriteI2C(DevAddrRxMain, APB_DATA3, apbData3)
board.WriteI2C(DevAddrRxMain, APB_CTL, 0x01)
def MSA_apb_read_reg(addr16b, channel, Device_ID):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
if channel == 0:
page = 0x03
elif channel == 1:
page = 0x0B
else:
page = 0x03
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
board.WriteI2C(Device_ID, APB_ADR0, addr16b_lsb)
board.WriteI2C(Device_ID, APB_ADR1, addr16b_msb)
board.WriteI2C(Device_ID, APB_CTL, page)
apbData0 = board.ReadI2C(Device_ID, APB_DATA0)
apbData1 = board.ReadI2C(Device_ID, APB_DATA1)
apbData2 = board.ReadI2C(Device_ID, APB_DATA2)
apbData3 = board.ReadI2C(Device_ID, APB_DATA3)
apbData = (apbData3 << 24) + (apbData2 << 16) + (apbData1 << 8) + (apbData0 << 0)
val32bit = apbData
return val32bit
def Measure_Video_DPTX(desAlias0, Port, PRNT_STATUS):
print("")
Offset = 0x00
htotal = MSA_apb_read_reg(0x180 + Offset, int(Port), desAlias0)
vtotal = MSA_apb_read_reg(0x184 + Offset, int(Port), desAlias0)
hres = MSA_apb_read_reg(0x194 + Offset, int(Port), desAlias0)
vres = MSA_apb_read_reg(0x198 + Offset, int(Port), desAlias0)
hstart = MSA_apb_read_reg(0x19C + Offset, int(Port), desAlias0)
vstart = MSA_apb_read_reg(0x1A0 + Offset, int(Port), desAlias0)
hswidth = MSA_apb_read_reg(0x18C + Offset, int(Port), desAlias0)
vswidth = MSA_apb_read_reg(0x190 + Offset, int(Port), desAlias0)
if PRNT_STATUS == 1:
print("Port", Port, ": DPTX VIDEO RESOLUTION:")
print("Port", Port, ": htotal (0x180) = " + str(htotal))
print("Port", Port, ": vtotal (0x184) = " + str(vtotal))
print("Port", Port, ": hres (0x18C) = " + str(hres))
print("Port", Port, ": vres (0x190) = " + str(vres))
print("Port", Port, ": hstart (0x19C) = " + str(hstart))
print("Port", Port, ": vstart (0x1A0) = " + str(vstart))
print("Port", Port, ": hswidth (0x18C) = " + str(hswidth))
print("Port", Port, ": vswidth (0x18C) = " + str(vswidth))
return htotal, hres, vtotal, vres
def Measure_Video_DPTX_HH(desAlias0, Port, PRNT_STATUS):
print("")
Offset = 0x00
htotal = MSA_apb_read_reg(0x820 + Offset, int(Port), desAlias0)
vtotal = MSA_apb_read_reg(0x824 + Offset, int(Port), desAlias0)
hres = MSA_apb_read_reg(0x834 + Offset, int(Port), desAlias0)
vres = MSA_apb_read_reg(0x838 + Offset, int(Port), desAlias0)
hstart = MSA_apb_read_reg(0x83C + Offset, int(Port), desAlias0)
vstart = MSA_apb_read_reg(0x840 + Offset, int(Port), desAlias0)
hswidth = MSA_apb_read_reg(0x82C + Offset, int(Port), desAlias0)
vswidth = MSA_apb_read_reg(0x830 + Offset, int(Port), desAlias0)
if PRNT_STATUS == 1:
print("Port", Port, ": DPTX VIDEO RESOLUTION:")
print("Port", Port, ": htotal (0x820) = " + str(htotal))
print("Port", Port, ": vtotal (0x824) = " + str(vtotal))
print("Port", Port, ": hres (0x834) = " + str(hres))
print("Port", Port, ": vres (0x838) = " + str(vres))
print("Port", Port, ": hstart (0x83C) = " + str(hstart))
print("Port", Port, ": vstart (0x840) = " + str(vstart))
print("Port", Port, ": hswidth (0x82C) = " + str(hswidth))
print("Port", Port, ": vswidth (0x830) = " + str(vswidth))
return htotal, hres, vtotal, vres
def apb_read_reg_984_DPTX(addr16b, channel, Device_ID):
APB_CTL = 0x48
APB_AUTO_INC = {'pos': 2, 'wid': 1}
APB_READ = {'pos': 1, 'wid': 1}
APB_ENABLE = {'pos': 0, 'wid': 1}
APB_ADR0 = 0x49
APB_ADR1 = 0x4A
APB_DATA0 = 0x4B
APB_DATA1 = 0x4C
APB_DATA2 = 0x4D
APB_DATA3 = 0x4E
if channel == 0:
page = 0x03
elif channel == 1:
page = 0x0B
else:
page = 0x03
addr16b_lsb = addr16b & 0xFF
addr16b_msb = (addr16b & 0xFF00) >> 8
##print 'READ inst'
board.WriteI2C(Device_ID, APB_ADR0, addr16b_lsb)
board.WriteI2C(Device_ID, APB_ADR1, addr16b_msb)
board.WriteI2C(Device_ID, APB_CTL, page)
apbData0 = board.ReadI2C(Device_ID, APB_DATA0)
apbData1 = board.ReadI2C(Device_ID, APB_DATA1)
apbData2 = board.ReadI2C(Device_ID, APB_DATA2)
apbData3 = board.ReadI2C(Device_ID, APB_DATA3)
apbData = (apbData3 << 24) + (apbData2 << 16) + (apbData1 << 8) + (apbData0 << 0)
val32bit = apbData
Device_ID = 0x00
return val32bit
def Ux984_APB_Dump(Port,Device_RX):
Stream = 0 # 0, 1, 2, or 3
if Stream == 0 :
Offset = 0x00
elif Stream == 1:
Offset = 0x400
elif Stream == 2:
Offset = 0x420
elif Stream == 3:
Offset = 0x500
else:
Offset = 0x00
print "PORT ",Port," DPTX APB Dump: Main Stream Attributes"
REG_000= apb_read_reg_984_DPTX(0x000,int(Port), Device_RX )
print "REG_000 (LINK_BW_SET) = ", (REG_000)
REG_004= apb_read_reg_984_DPTX(0x004,int(Port), Device_RX )
print "REG_004 (LANE_COUNT_SET) = ", (REG_004)
REG_008= apb_read_reg_984_DPTX(0x008,int(Port), Device_RX )
print "REG_008 (ENHANCED_FRAME_EN) = ", (REG_008)
REG_00C= apb_read_reg_984_DPTX(0x00C,int(Port), Device_RX )
print "REG_00C (TRAINING_PATTERN_SET) = ", (REG_00C)
REG_010= apb_read_reg_984_DPTX(0x010,int(Port), Device_RX )
print "REG_010 (LINK_QUAL_PATTERN_SET) = ", (REG_010)
REG_014= apb_read_reg_984_DPTX(0x014,int(Port), Device_RX )
print "REG_014 (SCRAMBLING_DISABLE) = ", (REG_014)
REG_018= apb_read_reg_984_DPTX(0x018,int(Port), Device_RX )
print "REG_018 (DOWNSPREAD_CTRL) = ", (REG_018)
REG_01C= apb_read_reg_984_DPTX(0x01C,int(Port), Device_RX )
print "REG_01C (EDP_CAPABILITY_CONFIG) = ", (REG_01C)
REG_020= apb_read_reg_984_DPTX(0x020,int(Port), Device_RX )
print "REG_020 (HBR2_COMPLIANCE_SCRAMBLER_RESET) = ", (REG_020)
REG_024= apb_read_reg_984_DPTX(0x024,int(Port), Device_RX )
print "REG_024 (DISPLAYPORT_VERSION) = ", (REG_024)
REG_028= apb_read_reg_984_DPTX(0x028,int(Port), Device_RX )
print "REG_024 (PHY_POWER_STATE) = ", (REG_028)
REG_02C= apb_read_reg_984_DPTX(0x02C,int(Port), Device_RX )
print "REG_02C (LANE_REMAP_CONTROL) = ", (REG_02C)
REG_030= apb_read_reg_984_DPTX(0x030,int(Port), Device_RX )
print "REG_030 (CUSTOM_80BIT_PATTERN_0) = ", (REG_030)
REG_034= apb_read_reg_984_DPTX(0x034,int(Port), Device_RX )
print "REG_034 (CUSTOM_80BIT_PATTERN_1) = ", (REG_034)
REG_038= apb_read_reg_984_DPTX(0x038,int(Port), Device_RX )
print "REG_038 (CUSTOM_80BIT_PATTERN_2) = ", (REG_038)
REG_060= apb_read_reg_984_DPTX(0x060,int(Port), Device_RX )
print "REG_060 (FEC_ENABLE) = ", (REG_060)
REG_080= apb_read_reg_984_DPTX(0x080,int(Port), Device_RX )
print "REG_080 (TRANSMITTER_OUTPUT_ENABLE) = ", (REG_080)
REG_084= apb_read_reg_984_DPTX(0x084,int(Port), Device_RX )
print "REG_084 (VIDEO_STREAM_ENABLE) = ", (REG_084)
REG_088= apb_read_reg_984_DPTX(0x088,int(Port), Device_RX )
print "REG_088 (SECONDARY_STREAM_ENABLE) = ", (REG_088)
REG_08C= apb_read_reg_984_DPTX(0x08C,int(Port), Device_RX )
print "REG_088 (SECONDARY_DATA_WINDOW) = ", (REG_08C)
REG_090= apb_read_reg_984_DPTX(0x090,int(Port), Device_RX )
print "REG_090 (SOFT_RESET) = ", (REG_090)
REG_094= apb_read_reg_984_DPTX(0x094,int(Port), Device_RX )
print "REG_094 (INPUT_SOURCE_ENABLE) = ", (REG_094)
REG_098= apb_read_reg_984_DPTX(0x098,int(Port), Device_RX )
print "REG_098 (FEC_ENABLE) = ", (REG_098)
REG_0C0= apb_read_reg_984_DPTX(0x0C0,int(Port), Device_RX )
print "REG_0C0 (ORCE_SCRAMBLER_RESET) = ", (REG_0C0)
REG_0C4= apb_read_reg_984_DPTX(0x0C4,int(Port), Device_RX )
print "REG_0C4 (USER_CONTROL_STATUS) = ", (REG_0C4)
REG_0C8= apb_read_reg_984_DPTX(0x0C8,int(Port), Device_RX )
print "REG_0C8 (USER_DATA_CONTROL) = ", (REG_0C8)
REG_0F8= apb_read_reg_984_DPTX(0x0F8,int(Port), Device_RX )
print "REG_0F8 (CORE_CAPABILITIES) = ", (REG_0F8)
REG_0FC= apb_read_reg_984_DPTX(0x0FC,int(Port), Device_RX )
print "REG_0FC (CORE_ID) = ", (REG_0FC)
REG_100= apb_read_reg_984_DPTX(0x100,int(Port), Device_RX )
print "REG_100 (AUX_COMMAND) = ", (REG_100)
REG_104= apb_read_reg_984_DPTX(0x104,int(Port), Device_RX )
print "REG_104 (AUX_WRITE_FIFO) = ", (REG_104)
REG_108= apb_read_reg_984_DPTX(0x108,int(Port), Device_RX )
print "REG_108 (AUX_ADDRESS) = ", (REG_108)
REG_10C= apb_read_reg_984_DPTX(0x10C,int(Port), Device_RX )
print "REG_10C (AUX_CLOCK_DIVIDER) = ", (REG_10C)
REG_110= apb_read_reg_984_DPTX(0x110,int(Port), Device_RX )
print "REG_110 (AUX_REPLY_TIMEOUT_INTERVAL) = ", (REG_110)
REG_128= apb_read_reg_984_DPTX(0x128,int(Port), Device_RX )
print "REG_128 (SINK_HPD_STATE) = ", (REG_128)
REG_130= apb_read_reg_984_DPTX(0x130,int(Port), Device_RX )
print "REG_130 (INTERRUPT_STATE) = ", (REG_130)
REG_134= apb_read_reg_984_DPTX(0x134,int(Port), Device_RX )
print "REG_134 (AUX_REPLY_DATA) = ", (REG_134)
REG_138= apb_read_reg_984_DPTX(0x138,int(Port), Device_RX )
print "REG_138 (AUX_REPLY_CODE) = ", (REG_138)
REG_13C= apb_read_reg_984_DPTX(0x13C,int(Port), Device_RX )
print "REG_13C (AUX_REPLY_COUNT) = ", (REG_13C)
REG_140= apb_read_reg_984_DPTX(0x140,int(Port), Device_RX )
print "REG_140 (INTERRUPT_STATUS) = ", (REG_140)
REG_144= apb_read_reg_984_DPTX(0x144,int(Port), Device_RX )
print "REG_144 (INTERRUPT_MASK) = ", (REG_144)
REG_148= apb_read_reg_984_DPTX(0x148,int(Port), Device_RX )
print "REG_148 (REPLY_DATA_COUNT) = ", (REG_148)
REG_14C= apb_read_reg_984_DPTX(0x14C,int(Port), Device_RX )
print "REG_14C (AUX_STATUS) = ", (REG_14C)
REG_150= apb_read_reg_984_DPTX(0x150,int(Port), Device_RX )
print "REG_150 (AUX_REPLY_CLOCK_WIDTH) = ", (REG_150)
REG_154= apb_read_reg_984_DPTX(0x154,int(Port), Device_RX )
print "REG_154 (AUX_WAKE_ACK_DETECTED) = ", (REG_154)
REG_158= apb_read_reg_984_DPTX(0x158,int(Port), Device_RX )
print "REG_158 (GP_HOST_TIMER) = ", (REG_158)
print ""
print "STREAM: ", Stream, " Register Read: "
print ""
REG_0180= apb_read_reg_984_DPTX(0x180+Offset,int(Port), Device_RX )
print "REG_0180 (MAIN_STREAM_HTOTAL) = ", (REG_0180)
REG_0184= apb_read_reg_984_DPTX(0x184+Offset,int(Port), Device_RX )
print "REG_0184 (MAIN_STREAM_VTOTAL) = ", (REG_0184)
REG_0188= apb_read_reg_984_DPTX(0x188+Offset,int(Port), Device_RX )
print "REG_0188 (MAIN_STREAM_POLARITY) = ", (REG_0188)
REG_018C= apb_read_reg_984_DPTX(0x18C+Offset,int(Port), Device_RX )
print "REG_018C (MAIN_STREAM_HSWIDTH) = ", (REG_018C)
REG_0190= apb_read_reg_984_DPTX(0x190+Offset,int(Port), Device_RX )
print "REG_0190 (MAIN_STREAM_VSWIDTH) = ", (REG_0190)
REG_0194= apb_read_reg_984_DPTX(0x194+Offset,int(Port), Device_RX )
print "REG_0194 (MAIN_STREAM_HRES) = ", (REG_0194)
REG_0198= apb_read_reg_984_DPTX(0x198+Offset,int(Port), Device_RX )
print "REG_0198 (MAIN_STREAM_VRES) = ", (REG_0198)
REG_019C= apb_read_reg_984_DPTX(0x19C+Offset,int(Port), Device_RX )
print "REG_019C (MAIN_STREAM_HSTART) = ", (REG_019C)
REG_01A0= apb_read_reg_984_DPTX(0x1A0+Offset,int(Port), Device_RX )
print "REG_01A0 (MAIN_STREAM_VSTART) = ", (REG_01A0)
REG_01A4= apb_read_reg_984_DPTX(0x1A4+Offset,int(Port), Device_RX )
print "REG_01A4 (MAIN_STREAM_MISC0) = ", (REG_01A4)
REG_01A8= apb_read_reg_984_DPTX(0x1A8+Offset,int(Port), Device_RX )
print "REG_01A8 (MAIN_STREAM_MISC1) = ", (REG_01A8)
REG_01AC= apb_read_reg_984_DPTX(0x1AC+Offset,int(Port), Device_RX )
print "REG_01AC (MVID) = ", (REG_01AC)
REG_01B0= apb_read_reg_984_DPTX(0x1B0+Offset,int(Port), Device_RX )
print "REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = ", (REG_01B0)
REG_01B4= apb_read_reg_984_DPTX(0x1B4+Offset,int(Port), Device_RX )
print "REG_01B4 (NVID) = ", (REG_01B4)
REG_01B8= apb_read_reg_984_DPTX(0x1B8+Offset,int(Port), Device_RX )
print "REG_01B8 (USER_PIXEL_COUNT) = ", (REG_01B8)
REG_01BC= apb_read_reg_984_DPTX(0x1BC+Offset,int(Port), Device_RX )
print "REG_01BC (USER_DATA_COUNT) = ", (REG_01BC)
REG_01C0= apb_read_reg_984_DPTX(0x1C0+Offset,int(Port), Device_RX )
print "REG_01C0 (MAIN_STREAM_INTERLACED) = ", (REG_01C0)
REG_01C4= apb_read_reg_984_DPTX(0x1C4+Offset,int(Port), Device_RX )
print "REG_01C4 (USER_SYNC_POLARITY) = ", (REG_01C4)
REG_01C8= apb_read_reg_984_DPTX(0x1C8+Offset,int(Port), Device_RX )
print "REG_01C8 (USER_CONTROL) = ", (REG_01C8)
REG_01CC= apb_read_reg_984_DPTX(0x1CC+Offset,int(Port), Device_RX )
print "REG_01CC (USER_CONTROL) = ", (REG_01CC)
REG_0500= apb_read_reg_984_DPTX(0x500,int(Port), Device_RX )
print "REG_0500 (MST_ENABLE) = ", (REG_0500)
REG_0504= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0504 (MST_PID_TABLE_INDEX) = ", (REG_0504)
REG_0508= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0508 (MST_PID_TABLE_ENTRY) = ", (REG_0508)
REG_050C= apb_read_reg_984_DPTX(0x50C,int(Port), Device_RX )
print "REG_050C (SST_SOURCE_SELECT) = ", (REG_050C)
REG_0510= apb_read_reg_984_DPTX(0x510,int(Port), Device_RX )
print "REG_0510 (MST_ALLOCATION_TRIGGER) = ", (REG_0510)
REG_0514= apb_read_reg_984_DPTX(0x514,int(Port), Device_RX )
print "REG_0514 (MST_PID_TABLE_SELECT) = ", (REG_0514)
REG_0518= apb_read_reg_984_DPTX(0x518,int(Port), Device_RX )
print "REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = ", (REG_0518)
REG_0520= apb_read_reg_984_DPTX(0x520,int(Port), Device_RX )
print "REG_0520 (MST_ACTIVE) = ", (REG_0520)
REG_0524= apb_read_reg_984_DPTX(0x524,int(Port), Device_RX )
print "REG_0524 (MST_LINK_FRAME_COUNT) = ", (REG_0524)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
# Port = 1
# print ""
# print "PORT ",Port," DPTX APB Dump: Main Stream Attributes"
# print ""
# REG_000= apb_read_reg(0x000,int(Port), Device_RX )
# print "REG_000 (LINK_BW_SET) = ", (REG_000)
# REG_004= apb_read_reg(0x004,int(Port), Device_RX )
# print "REG_004 (LANE_COUNT_SET) = ", (REG_004)
# REG_008= apb_read_reg(0x008,int(Port), Device_RX )
# print "REG_008 (ENHANCED_FRAME_EN) = ", (REG_008)
# REG_00C= apb_read_reg(0x00C,int(Port), Device_RX )
# print "REG_00C (TRAINING_PATTERN_SET) = ", (REG_00C)
# REG_010= apb_read_reg(0x010,int(Port), Device_RX )
# print "REG_010 (LINK_QUAL_PATTERN_SET) = ", (REG_010)
# REG_014= apb_read_reg(0x014,int(Port), Device_RX )
# print "REG_014 (SCRAMBLING_DISABLE) = ", (REG_014)
# REG_018= apb_read_reg(0x018,int(Port), Device_RX )
# print "REG_018 (DOWNSPREAD_CTRL) = ", (REG_018)
# REG_01C= apb_read_reg(0x01C,int(Port), Device_RX )
# print "REG_01C (EDP_CAPABILITY_CONFIG) = ", (REG_01C)
# REG_020= apb_read_reg(0x020,int(Port), Device_RX )
# print "REG_020 (HBR2_COMPLIANCE_SCRAMBLER_RESET) = ", (REG_020)
# REG_024= apb_read_reg(0x024,int(Port), Device_RX )
# print "REG_024 (DISPLAYPORT_VERSION) = ", (REG_024)
# REG_028= apb_read_reg(0x028,int(Port), Device_RX )
# print "REG_024 (PHY_POWER_STATE) = ", (REG_028)
# REG_02C= apb_read_reg(0x02C,int(Port), Device_RX )
# print "REG_02C (LANE_REMAP_CONTROL) = ", (REG_02C)
# REG_030= apb_read_reg(0x030,int(Port), Device_RX )
# print "REG_030 (CUSTOM_80BIT_PATTERN_0) = ", (REG_030)
# REG_034= apb_read_reg(0x034,int(Port), Device_RX )
# print "REG_034 (CUSTOM_80BIT_PATTERN_1) = ", (REG_034)
# REG_038= apb_read_reg(0x038,int(Port), Device_RX )
# print "REG_038 (CUSTOM_80BIT_PATTERN_2) = ", (REG_038)
# REG_060= apb_read_reg(0x060,int(Port), Device_RX )
# print "REG_060 (FEC_ENABLE) = ", (REG_060)
# REG_080= apb_read_reg(0x080,int(Port), Device_RX )
# print "REG_080 (TRANSMITTER_OUTPUT_ENABLE) = ", (REG_080)
# REG_084= apb_read_reg(0x084,int(Port), Device_RX )
# print "REG_084 (VIDEO_STREAM_ENABLE) = ", (REG_084)
# REG_088= apb_read_reg(0x088,int(Port), Device_RX )
# print "REG_088 (SECONDARY_STREAM_ENABLE) = ", (REG_088)
# REG_08C= apb_read_reg(0x08C,int(Port), Device_RX )
# print "REG_088 (SECONDARY_DATA_WINDOW) = ", (REG_08C)
# REG_090= apb_read_reg(0x090,int(Port), Device_RX )
# print "REG_090 (SOFT_RESET) = ", (REG_090)
# REG_094= apb_read_reg(0x094,int(Port), Device_RX )
# print "REG_094 (INPUT_SOURCE_ENABLE) = ", (REG_094)
# REG_098= apb_read_reg(0x098,int(Port), Device_RX )
# print "REG_098 (FEC_ENABLE) = ", (REG_098)
# REG_0C0= apb_read_reg(0x0C0,int(Port), Device_RX )
# print "REG_0C0 (ORCE_SCRAMBLER_RESET) = ", (REG_0C0)
# REG_0C4= apb_read_reg(0x0C4,int(Port), Device_RX )
# print "REG_0C4 (USER_CONTROL_STATUS) = ", (REG_0C4)
# REG_0C8= apb_read_reg(0x0C8,int(Port), Device_RX )
# print "REG_0C8 (USER_DATA_CONTROL) = ", (REG_0C8)
# REG_0F8= apb_read_reg(0x0F8,int(Port), Device_RX )
# print "REG_0F8 (CORE_CAPABILITIES) = ", (REG_0F8)
# REG_0FC= apb_read_reg(0x0FC,int(Port), Device_RX )
# print "REG_0FC (CORE_ID) = ", (REG_0FC)
# REG_100= apb_read_reg(0x100,int(Port), Device_RX )
# print "REG_100 (AUX_COMMAND) = ", (REG_100)
# REG_104= apb_read_reg(0x104,int(Port), Device_RX )
# print "REG_104 (AUX_WRITE_FIFO) = ", (REG_104)
# REG_108= apb_read_reg(0x108,int(Port), Device_RX )
# print "REG_108 (AUX_ADDRESS) = ", (REG_108)
# REG_10C= apb_read_reg(0x10C,int(Port), Device_RX )
# print "REG_10C (AUX_CLOCK_DIVIDER) = ", (REG_10C)
# REG_110= apb_read_reg(0x110,int(Port), Device_RX )
# print "REG_110 (AUX_REPLY_TIMEOUT_INTERVAL) = ", (REG_110)
# REG_128= apb_read_reg(0x128,int(Port), Device_RX )
# print "REG_128 (SINK_HPD_STATE) = ", (REG_128)
# REG_130= apb_read_reg(0x130,int(Port), Device_RX )
# print "REG_130 (INTERRUPT_STATE) = ", (REG_130)
# REG_134= apb_read_reg(0x134,int(Port), Device_RX )
# print "REG_134 (AUX_REPLY_DATA) = ", (REG_134)
# REG_138= apb_read_reg(0x138,int(Port), Device_RX )
# print "REG_138 (AUX_REPLY_CODE) = ", (REG_138)
# REG_13C= apb_read_reg(0x13C,int(Port), Device_RX )
# print "REG_13C (AUX_REPLY_COUNT) = ", (REG_13C)
# REG_140= apb_read_reg(0x140,int(Port), Device_RX )
# print "REG_140 (INTERRUPT_STATUS) = ", (REG_140)
# REG_144= apb_read_reg(0x144,int(Port), Device_RX )
# print "REG_144 (INTERRUPT_MASK) = ", (REG_144)
# REG_148= apb_read_reg(0x148,int(Port), Device_RX )
# print "REG_148 (REPLY_DATA_COUNT) = ", (REG_148)
# REG_14C= apb_read_reg(0x14C,int(Port), Device_RX )
# print "REG_14C (AUX_STATUS) = ", (REG_14C)
# REG_150= apb_read_reg(0x150,int(Port), Device_RX )
# print "REG_150 (AUX_REPLY_CLOCK_WIDTH) = ", (REG_150)
# REG_154= apb_read_reg(0x154,int(Port), Device_RX )
# print "REG_154 (AUX_WAKE_ACK_DETECTED) = ", (REG_154)
# REG_158= apb_read_reg(0x158,int(Port), Device_RX )
# print "REG_158 (GP_HOST_TIMER) = ", (REG_158)
print ""
print "STREAM: ", Stream, " Register Read: "
print ""
REG_0180= apb_read_reg_984_DPTX(0x180+Offset,int(Port), Device_RX )
print "REG_0180 (MAIN_STREAM_HTOTAL) = ", (REG_0180)
REG_0184= apb_read_reg_984_DPTX(0x184+Offset,int(Port), Device_RX )
print "REG_0184 (MAIN_STREAM_VTOTAL) = ", (REG_0184)
REG_0188= apb_read_reg_984_DPTX(0x188+Offset,int(Port), Device_RX )
print "REG_0188 (MAIN_STREAM_POLARITY) = ", (REG_0188)
REG_018C= apb_read_reg_984_DPTX(0x18C+Offset,int(Port), Device_RX )
print "REG_018C (MAIN_STREAM_HSWIDTH) = ", (REG_018C)
REG_0190= apb_read_reg_984_DPTX(0x190+Offset,int(Port), Device_RX )
print "REG_0190 (MAIN_STREAM_VSWIDTH) = ", (REG_0190)
REG_0194= apb_read_reg_984_DPTX(0x194+Offset,int(Port), Device_RX )
print "REG_0194 (MAIN_STREAM_HRES) = ", (REG_0194)
REG_0198= apb_read_reg_984_DPTX(0x198+Offset,int(Port), Device_RX )
print "REG_0198 (MAIN_STREAM_VRES) = ", (REG_0198)
REG_019C= apb_read_reg_984_DPTX(0x19C+Offset,int(Port), Device_RX )
print "REG_019C (MAIN_STREAM_HSTART) = ", (REG_019C)
REG_01A0= apb_read_reg_984_DPTX(0x1A0+Offset,int(Port), Device_RX )
print "REG_01A0 (MAIN_STREAM_VSTART) = ", (REG_01A0)
REG_01A4= apb_read_reg_984_DPTX(0x1A4+Offset,int(Port), Device_RX )
print "REG_01A4 (MAIN_STREAM_MISC0) = ", (REG_01A4)
REG_01A8= apb_read_reg_984_DPTX(0x1A8+Offset,int(Port), Device_RX )
print "REG_01A8 (MAIN_STREAM_MISC1) = ", (REG_01A8)
REG_01AC= apb_read_reg_984_DPTX(0x1AC+Offset,int(Port), Device_RX )
print "REG_01AC (MVID) = ", (REG_01AC)
REG_01B0= apb_read_reg_984_DPTX(0x1B0+Offset,int(Port), Device_RX )
print "REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = ", (REG_01B0)
REG_01B4= apb_read_reg_984_DPTX(0x1B4+Offset,int(Port), Device_RX )
print "REG_01B4 (NVID) = ", (REG_01B4)
REG_01B8= apb_read_reg_984_DPTX(0x1B8+Offset,int(Port), Device_RX )
print "REG_01B8 (USER_PIXEL_COUNT) = ", (REG_01B8)
REG_01BC= apb_read_reg_984_DPTX(0x1BC+Offset,int(Port), Device_RX )
print "REG_01BC (USER_DATA_COUNT) = ", (REG_01BC)
REG_01C0= apb_read_reg_984_DPTX(0x1C0+Offset,int(Port), Device_RX )
print "REG_01C0 (MAIN_STREAM_INTERLACED) = ", (REG_01C0)
REG_01C4= apb_read_reg_984_DPTX(0x1C4+Offset,int(Port), Device_RX )
print "REG_01C4 (USER_SYNC_POLARITY) = ", (REG_01C4)
REG_01C8= apb_read_reg_984_DPTX(0x1C8+Offset,int(Port), Device_RX )
print "REG_01C8 (USER_CONTROL) = ", (REG_01C8)
REG_0500= apb_read_reg_984_DPTX(0x500,int(Port), Device_RX )
print "REG_0500 (MST_ENABLE) = ", (REG_0500)
REG_0504= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0504 (MST_PID_TABLE_INDEX) = ", (REG_0504)
REG_0508= apb_read_reg_984_DPTX(0x504,int(Port), Device_RX )
print "REG_0508 (MST_PID_TABLE_ENTRY) = ", (REG_0508)
REG_050C= apb_read_reg_984_DPTX(0x50C,int(Port), Device_RX )
print "REG_050C (SST_SOURCE_SELECT) = ", (REG_050C)
REG_0510= apb_read_reg_984_DPTX(0x510,int(Port), Device_RX )
print "REG_0510 (MST_ALLOCATION_TRIGGER) = ", (REG_0510)
REG_0514= apb_read_reg_984_DPTX(0x514,int(Port), Device_RX )
print "REG_0514 (MST_PID_TABLE_SELECT) = ", (REG_0514)
REG_0518= apb_read_reg_984_DPTX(0x518,int(Port), Device_RX )
print "REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = ", (REG_0518)
REG_0520= apb_read_reg_984_DPTX(0x520,int(Port), Device_RX )
print "REG_0520 (MST_ACTIVE) = ", (REG_0520)
REG_0524= apb_read_reg_984_DPTX(0x524,int(Port), Device_RX )
print "REG_0524 (MST_LINK_FRAME_COUNT) = ", (REG_0524)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
REG_0528= apb_read_reg_984_DPTX(0x528,int(Port), Device_RX )
print "REG_0528 (MSO_CONFIGURATION) = ", (REG_0528)
def Ux983_APBs(var):
for var in range (0x00,138):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (256,336):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (448,457):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (512,589+1):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
for var in range (640,760+1):
print hex(var*4), hex(apb_read_reg(serAddr,var*4))
def HH983_APBs():
print("Receiver core config")
print("0x0 (reciver core enable) = " + hex(apb_read_reg(serAddr,0x0)))
print("0x018 (misc_config) = " + hex(apb_read_reg(serAddr,0x018)))
print("0x024 (request_error_count) = " + hex(apb_read_reg(serAddr,0x024)))
print("0x028 (request_count) = " + hex(apb_read_reg(serAddr,0x028)))
print("0x070 (max_lane_count) = " + hex(apb_read_reg(serAddr,0x070)))
print("0x074 (max_link_rate) = " + hex(apb_read_reg(serAddr,0x074)))
print("")
print("PHY config and status")
print("0x208 (phy_status) = " + hex(apb_read_reg(serAddr,0x208)))
print("0x214 (min_voltage_swing) = " + hex(apb_read_reg(serAddr,0x214)))
print("0x218 (min_pre_emphasis) = " + hex(apb_read_reg(serAddr,0x218)))
print("0x208 (phy_status) = " + hex(apb_read_reg(serAddr,0x208)))
print("")
print("DPCD config space")
print("0x400 (LANE01_status) = " + hex(apb_read_reg(serAddr,0x400)))
print("0x404 (LANE23_status) = " + hex(apb_read_reg(serAddr,0x404)))
print("---MSA Video Timings----")
print("H Res: ", apb_read_reg(serAddr,0x500))
print("H Pol: ", apb_read_reg(serAddr,0x504))
hsync = apb_read_reg(serAddr,0x508)
print("H Sync: ", apb_read_reg(serAddr,0x508))
print("H Back Porch: ", apb_read_reg(serAddr,0x50C) - hsync)
print("H Total: ", apb_read_reg(serAddr,0x510))
print("V Res: ", apb_read_reg(serAddr,0x514))
print("V Pol: ", apb_read_reg(serAddr,0x518))
v_sync = apb_read_reg(serAddr,0x51c)
print("V Sync Width: ", v_sync)
print("V Back Porch: ", apb_read_reg(serAddr,0x520) - v_sync)
print("V Total: ", apb_read_reg(serAddr,0x524))
print(" ")
print("MSA MISC0: ", apb_read_reg(serAddr,0x528))
print("MSA_MISC1: ", apb_read_reg(serAddr,0x52C))
print("MSA_MVID: ", hex(apb_read_reg(serAddr,0x530)))
print("MSA_NVID: ", hex(apb_read_reg(serAddr,0x534)))
print("MSA_VBID: ", hex(apb_read_reg(serAddr,0x538)))
print("MSA Updated", apb_read_reg(serAddr,0x544))
print("")
print("HDCP Config")
print("0x600 (HDCP_enable) = " + hex(apb_read_reg(serAddr,0x600)))
print("0x604 (HDCP_mode_select) = " + hex(apb_read_reg(serAddr,0x604)))
# print("0x608 (HDCP_KS_31_0) = " + hex(apb_read_reg(serAddr,0x608)))
# print("0x60C (HDCP_KS_63_32) = " + hex(apb_read_reg(serAddr,0x60C)))
# print("0x610 (HDCP_KM_31_0) = " + hex(apb_read_reg(serAddr,0x610)))
# print("0x614 (HDCP_KM_55_32) = " + hex(apb_read_reg(serAddr,0x614)))
print("0x618 (HDCP_AN_31_0) = " + hex(apb_read_reg(serAddr,0x618)))
print("0x61C (HDCP_AN_63_32) = " + hex(apb_read_reg(serAddr,0x61C)))
print("0x624 (HDCP_authentication_in_progress) = " + hex(apb_read_reg(serAddr,0x624)))
print("0x628 (HDCP_status) = " + hex(apb_read_reg(serAddr,0x628)))
print("0x62C (HDCP_CIPHER_CONTROL) = " + hex(apb_read_reg(serAddr,0x62C)))
print("0x630 (HDCP_AKSV_31_0) = " + hex(apb_read_reg(serAddr,0x630)))
print("0x634 (HDCP_AKSV_63_32) = " + hex(apb_read_reg(serAddr,0x634)))
print("0x638 (HDCP_HW_BKSV_31_0) = " + hex(apb_read_reg(serAddr,0x638)))
print("0x63C (HDCP_HW_BKSV_63_32) = " + hex(apb_read_reg(serAddr,0x63C)))
print("0x650 (HDCP_REPEATER) = " + hex(apb_read_reg(serAddr,0x650)))
print("0x654 (HDCP_stream_cipher_enable) = " + hex(apb_read_reg(serAddr,0x654)))
print("0x658 (HDCP_MO_31_0) = " + hex(apb_read_reg(serAddr,0x658)))
print("0x65C (HDCP_MO_63_32) = " + hex(apb_read_reg(serAddr,0x65C)))
print("0x660 (HDCP_AES_INPUT_SELECT) = " + hex(apb_read_reg(serAddr,0x660)))
print("0x664 (HDCP_AES_COUNTER_DISABLE) = " + hex(apb_read_reg(serAddr,0x664)))
print("0x668 (HDCP_AES_COUNTER_ADVANCE) = " + hex(apb_read_reg(serAddr,0x668)))
print("0x66C (HDCP_ENCRYPTION_CONTROL_FIELD_31_0) = " + hex(apb_read_reg(serAddr,0x66C)))
print("0x670 (HDCP_ENCRYPTION_CONTROL_FIELD_63_32) = " + hex(apb_read_reg(serAddr,0x670)))
print("0x678 (HDCP_RN_31_0) = " + hex(apb_read_reg(serAddr,0x678)))
print("0x67C (HDCP_RN_63_32) = " + hex(apb_read_reg(serAddr,0x67C)))
print("0x684 (HDCP_RNG_CIPHER_AN_31_0) = " + hex(apb_read_reg(serAddr,0x684)))
print("0x688 (HDCP_RNG_CIPHER_AN_63_32) = " + hex(apb_read_reg(serAddr,0x688)))
print("0x68C (HDCP_HOST_TIMER) = " + hex(apb_read_reg(serAddr,0x68C)))
print("0x690 (HDCP_encryption_active) = " + hex(apb_read_reg(serAddr,0x690)))
print("0x694 (HDCP_link_integrity_failure) = " + hex(apb_read_reg(serAddr,0x694)))
print("0x698 (HDCP_content_type_select_31_0) = " + hex(apb_read_reg(serAddr,0x698)))
print("0x69C (HDCP_content_type_select_63_32) = " + hex(apb_read_reg(serAddr,0x69C)))
def Ux948_Res_dump(desAlias0):
time.sleep(1)
board.WriteI2C(desAlias0,0x68,0x19) # H active High monitor
Hhigh = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x09) # H active Low monitor
Hlow = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x39) # V active High monitor
Vhigh = board.ReadI2C(desAlias0, 0x69, 1)
board.WriteI2C(desAlias0,0x68,0x29) # V active Low monitor
Vlow = board.ReadI2C(desAlias0, 0x69, 1)
mask = int('00111111',2)
hlowmask = Hlow & mask
hhighmask = Hhigh & mask
vlowmask = Vlow & mask
vhighmask = Vhigh & mask
hhighmask = hhighmask << 6
vhighmask = vhighmask << 6
Hactive = hhighmask | hlowmask
Vactive = vhighmask | vlowmask
print Hactive ,"x", Vactive ,",", #print out detected Dimensions
def Ux98x_SERDES_Full_Diagnostics():
time.sleep(0.1)
if SER == "HH983" or SER == "Ux983" or SER == "Ux943A":
board.WriteI2C(serAddr, 0x7, 0x88) # Enable I2C Passthrough for FPD4 98x SER
if SER == "Hx94x":
board.WriteI2C(serAddr, 0x3, 0xDA) # Enable I2C Passthrough for FPD4 98x SER
if SER == "Ux94x":
print"Ux94x Statuses"
for x in range(20):
print"Device_ID = ", hex(board.ReadI2C(serAddr, 0x0)), ",",
print"GENERAL_STATUS = ", hex(board.ReadI2C(serAddr, 0xC))
# Clear CRC Erorr"
Reg_4 = board.ReadI2C(serAddr, 0x4)
Reg_4_mask = Reg_4 | 0x20
board.WriteI2C(serAddr, 0x4, Reg_4_mask) # CRC Error Reset
Reg_4 = board.ReadI2C(serAddr, 0x4)
Reg_4_unmask = Reg_4 & 0xDF
board.WriteI2C(serAddr, 0x4, Reg_4_unmask) # CRC Error Reset Clear
for x in range(20):
print"CRC_0xA = ", hex(board.ReadI2C(serAddr, 0xA)), ",",
print"CRC_0xB = ", hex(board.ReadI2C(serAddr, 0xB))
if DES == "Ux948":
print "Ux948 Statuses"
for x in range(20):
print"GENERAL_STATUS = ", hex(board.ReadI2C(desAlias0, 0x1C)), ",",
print"DUAL_RX_CTL = ", hex(board.ReadI2C(desAlias0, 0x34)), ",",
print"Mode_Sel = ", hex(board.ReadI2C(desAlias0, 0x37)), ",",
Ux948_Res_dump(desAlias0)
print"FPD_TX_MODE = ", hex(board.ReadI2C(desAlias0, 0x49))
if SER == "HH983" or SER == "Ux983" or SER == "Ux943A" or SER == "Ux981":
print"----------------------------------"
print("Lock / Link Status")
for x in range(10):
print"Ser Reg 0xC = ", hex(board.ReadI2C(serAddr, 0xC, 1)), ",",
print"Des Reg 0x53 = ", hex(board.ReadI2C(desAlias0, 0x53, 1)), ",",
print"Des Reg 0x54 = ", hex(board.ReadI2C(desAlias0, 0x54, 1)), ",",
board.WriteI2C(serAddr, 0x40, 18 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x4E)
print"Des Reg 0x4E = ", hex(board.ReadI2C(desAlias0, 0x42))
if VP and SER == "HH983" or SER == "Ux983" or SER == "Ux943A" or SER == "Ux981":
print "----------------------------------"
print ("VP Status")
for x in range(10):
board.WriteI2C(serAddr, 0x40, 0x33)
board.WriteI2C(serAddr, 0x41, 0x30)
print "VP_STATUS:", board.ReadI2C(serAddr, 0x42, 1), ",",
board.WriteI2C(serAddr, 0x40, 0x33)
board.WriteI2C(serAddr, 0x41, 0x31)
print "VP_INTERRUPTS:", board.ReadI2C(serAddr, 0x42, 1)
if SER == "Ux981":
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0xe)
read_val = board.ReadI2C(serAddr, 0x42)
print"INTR_STS_DPHY = 0x", hex(read_val)
print"[1] IS_DPHY_LANE_SYNC_ERROR", (read_val & 0x2) >> 1
print"[0] IS_DPHY_LANE_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0xf)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_STATUS = 0x", hex(read_val)
print"[4] C_LANE_ACTIVE", (read_val & 0x10) >> 4
print"[3] D_LANE3_ACTIVE", (read_val & 0x8) >> 3
print"[2] D_LANE2_ACTIVE", (read_val & 0x4) >> 2
print"[1] D_LANE1_ACTIVE", (read_val & 0x2) >> 1
print"[0] D_LANE0_ACTIVE", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x10)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE0 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x11)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE1 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x12)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE2 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x13)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DLANE3 = 0x", hex(read_val)
print"[4] EOT_SYNC_ERROR", (read_val & 0x10) >> 4
print"[3] SOT_ERROR", (read_val & 0x8) >> 3
print"[2] SOT_SYNC_ERROR", (read_val & 0x4) >> 2
print"[1] CNTRL_ERR_HSRQST", (read_val & 0x2) >> 1
print"[0] HS_RX_TO_ERROR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x14)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_ERR_CLK_LANE = 0x", hex(read_val)
print
"[2] CNTRL_ERR_HSRQST_CLK", (read_val & 0x4) >> 2
print"[0] HS RX TO ERROR_CLK", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x15)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_SYNC_STS = 0x", read_val
print"[3] DLANE3_SYNC_STS", (read_val & 0x8) >> 3
print"[2] DLANE2_SYNC_STS", (read_val & 0x4) >> 2
print"[1] DLANE1_SYNC_STS", (read_val & 0x2) >> 1
print"[0] DLANE0_SYNC_STS", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x23)
read_val = board.ReadI2C(serAddr, 0x42)
print"INTR_STS_DSI_ERR = 0x", read_val
print"[7] IS_INV_TYPE_GLW_ERR", (read_val & 0x80) >> 7
print"[6] IS_INV_WC_GLW_ERR", (read_val & 0x40) >> 6
print"[5] IS_INV_LEN_ERR", (read_val & 0x20) >> 5
print"[4] IS_INV_VC_ERR", (read_val & 0x10) >> 4
print"[3] IS_INV_DT_ERR", (read_val & 0x8) >> 3
print"[2] IS_CHECKSUM_ERR", (read_val & 0x4) >> 2
print"[1] IS_ECC_MULTI_ERR", (read_val & 0x2) >> 1
print"[0] IS_ECC_SINGLE_ERR", read_val & 0x1
board.WriteI2C(serAddr, 0x40, 4 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x2a)
read_val = board.ReadI2C(serAddr, 0x42)
print"DPHY_DSI_VC_DTYPE = 0x", read_val
if SER == "HH983" and DPRX:
print "----------------------------------"
print ("DPRX Status")
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [19:16]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [15:8]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [7:0]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F0, 0x02) # Read Strobe
LINK_BW_SET = apb_read_reg(serAddr, 0x4F8)
if LINK_BW_SET == 0:
print "No Link Speed Detected"
elif LINK_BW_SET == 0x06:
print "Link Rate = 1.62Gbps/lane"
elif LINK_BW_SET == 0x0A:
print "Link Rate = 2.7Gbps/lane"
elif LINK_BW_SET == 0x14:
print "Link Rate = 5.4Gbps/lane"
elif LINK_BW_SET == 0x1E:
print "Link Rate = 8.1Gbps/lane"
# Lane Count Check via Direct DPCD Access
apb_write_reg(serAddr, 0x4F4, 0x00) # Address [19:16]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [15:8]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F4, 0x01) # Address [7:0]
apb_write_reg(serAddr, 0x4F0, 0x03)
apb_write_reg(serAddr, 0x4F0, 0x02) # Read Strobe
LANE_COUNT_SET = apb_read_reg(serAddr, 0x4F8)
if LANE_COUNT_SET & 0x1F == 0:
print "No Active DP Lanes Detected"
elif LANE_COUNT_SET & 0x1F == 0x01:
print "One DP Lane"
elif LANE_COUNT_SET & 0x1F == 0x02:
print "Two DP Lanes"
elif LANE_COUNT_SET & 0x1F == 0x04:
print "4 DP Lanes"
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
if SER == "Ux983" or SER == "Ux943A":
print "----------------------------------"
print ("DPRX Status")
print apb_read_reg(serAddr, 0x400) * 27, ("Rate")
print apb_read_reg(serAddr, 0x404), ("Lanes")
print hex(apb_read_reg(serAddr, 0x43c))
print hex(apb_read_reg(serAddr, 0x440))
print hex(apb_read_reg(serAddr, 0x18))
print hex(apb_read_reg(serAddr, 0x48C))
if apb_read_reg(serAddr, 0x48C) == 0:
print "Video source is set to SST mode"
if apb_read_reg(serAddr, 0x48C) == 1:
print "Video source is set to MST mode"
print "----------------------------------"
if SER == "Ux983" or SER == "Ux943A" and SER_MSAs:
if MST == 0:
apb_write_reg(serAddr, 0x540, 0x0)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
else:
print "----------------------------------"
print("## MST0")
apb_write_reg(serAddr, 0x540, 0x0)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
print("## MST1")
apb_write_reg(serAddr, 0x540, 0x1)
print("H Res")
print apb_read_reg(serAddr, 0x500)
print("H POL")
print apb_read_reg(serAddr, 0x504)
print("H SYNC WIDTH")
h_sync = apb_read_reg(serAddr, 0x508)
print h_sync
print("H BACK PORCH")
H_Back = apb_read_reg(serAddr, 0x50C) - h_sync
print H_Back
print("H TOTAL")
print apb_read_reg(serAddr, 0x510)
print("V Res")
print apb_read_reg(serAddr, 0x514)
print("V POL")
print apb_read_reg(serAddr, 0x518)
print("V SYNC WIDTH")
v_sync = apb_read_reg(serAddr, 0x51C)
print v_sync
print("V BACK PORCH ")
v_back = apb_read_reg(serAddr, 0x520) - v_sync
print v_back
print("HV TOTAL")
print apb_read_reg(serAddr, 0x524)
print("MSA_MISC0")
print apb_read_reg(serAddr, 0x528)
print("MSA_MISC1")
print apb_read_reg(serAddr, 0x52C)
print("MSA_MVID")
print apb_read_reg(serAddr, 0x530)
print("MSA_NVID")
print apb_read_reg(serAddr, 0x534)
print("MSA_VBID")
print apb_read_reg(serAddr, 0x538)
print("SYMBOL ERRORs - Lane 0")
print hex(apb_read_reg(serAddr, 0x490))
print("SYMBOL ERRORs - Lane 1")
print hex(apb_read_reg(serAddr, 0x494))
print("SYMBOL ERRORs - Lane 2")
print hex(apb_read_reg(serAddr, 0x498))
print("SYMBOL ERRORs - Lane 3")
print hex(apb_read_reg(serAddr, 0x49C))
if DES == "Ux984" or DES == "HH984":
if DPTX:
print "----------------------------------"
print "DPTX Status"
## AUX DP/eDP Train Status Read 0x202 and 0x203
board.WriteI2C(desAlias0, 0x40, 0x2D)
board.WriteI2C(desAlias0, 0x41, 0x93)
print "Page11 reg 0x93 = ", hex(board.ReadI2C(desAlias0, 0x42, 1))
for dpcdAddr in range(0x202, 0x204):
apb_write_reg(desAlias0, 0x13C, 0x1) # Clear AUX_Reply Count
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
AUX_REPLY_COUNT = apb_read_reg(desAlias0, 0x13C)
# print "AUX Reply Count:", AUX_REPLY_COUNT
if AUX_REPLY_COUNT == 1:
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
else:
print "No AUX Reply Detected"
apb_write_reg(desAlias0, 0x108, 0x202) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
apb_write_reg(desAlias0, 0x108, 0x202) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "'DPCD addr " + hex(0x202) + " is " + hex(replyData)
apb_write_reg(desAlias0, 0x108, 0x203) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
apb_write_reg(desAlias0, 0x108, 0x203) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "'DPCD addr " + hex(0x203) + " is " + hex(replyData)
for dpcdAddr in range(0x100, 0x101):
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
if replyData == 10:
print "DPTX = 2.7 Gbps"
if replyData == 6:
print "DPTX = 1.62 Gbps"
if replyData == 20:
print "DPTX = 5.4 Gbps"
if replyData == 30:
print "DPTX = 8.1 Gbps"
for dpcdAddr in range(0x101, 0x102):
# Aux read transaction to read DPCD registers
apb_write_reg(desAlias0, 0x108, dpcdAddr) # aux address
apb_write_reg(desAlias0, 0x100, 0x900) # aux Command to read
time.sleep(0.25)
replyData = apb_read_reg(desAlias0, 0x134) # Read reply data
print "DPCD addr " + hex(dpcdAddr) + " is " + hex(replyData)
if replyData == 0x84:
print "DP_Lanes = 4"
print "----------------------------------"
print "Des FIFO = ", hex(apb_read_reg(desAlias0, 0x1CC))
if DTGs:
print "----------------------------------"
print "DTG Port 0 Timing:"
measure = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
board.WriteI2C(desAlias0, 0x40, 0x53)
board.WriteI2C(desAlias0, 0x41, 0x40)
for x in range(0, 16, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42, 1)
Htotal = (measure[0] << 8) | measure[1]
print "Htotal = ", Htotal
Vtotal = (measure[2] << 8) | measure[3]
print "Vtotal = ", Vtotal
Hactive = (measure[4] << 8) | measure[5]
print "Hactive = ", Hactive
Vactive = (measure[6] << 8) | measure[7]
print "Vactive = ", Vactive
Hstart = (measure[8] << 8) | measure[9]
print "Hstart = ", Hstart
Vstart = (measure[10] << 8) | measure[11]
Hsync = (measure[12] << 8) | measure[13]
print "Hsync = ", Hsync
Vsync = (measure[14] << 8) | measure[15]
print "Vsync = ", Vsync
Vback = Vstart - Vsync
print "Vback = ", Vback
Vfront = Vtotal - Vactive - Vsync - Vback
print "Vfront = ", Vfront
if DP0 and DES == "Ux984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX(desAlias0, 0, 1)
print "----------------------------------"
print "Ux984 DPTX APBs"
Ux984_APB_Dump(0,desAlias0)
if DP0 and DES == "HH984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX_HH(desAlias0, 0, 1)
if DP1 and DES == "Ux984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX(desAlias0, 1, 1)
if DP1 and DES == "HH984":
print "----------------------------------"
print "Print Des MSAs"
Measure_Video_DPTX_HH(desAlias0, 1, 1)
if DES == "Ux988" :
print "----------------------------------"
print "Ux988 Status"
print "DES_Addr = ", hex(board.ReadI2C(desAlias0, 0x0))
for x in range(10):
# print ("Link and Lock Status")
print "Ser Reg 0xC = ", hex(board.ReadI2C(serAddr, 0xC, 1)), ",",
print "Des Reg 0x53 = ", hex(board.ReadI2C(desAlias0, 0x53, 1)), ",",
print "Des Reg 0x54 = ", hex(board.ReadI2C(desAlias0, 0x54, 1)), ",",
board.WriteI2C(serAddr, 0x40, 18 * 4 + 1)
board.WriteI2C(serAddr, 0x41, 0x4E)
print "Des Reg 0x4E = ", hex(board.ReadI2C(desAlias0, 0x42))
measure = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
board.WriteI2C(desAlias0, 0x40, 0x53)
board.WriteI2C(desAlias0, 0x41, 0x40)
for x in range(0, 16, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42, 1)
print "----------------------------------"
print "Ux988 DTGs"
Htotal = (measure[0] << 8) | measure[1]
print "Htotal = ", Htotal
Vtotal = (measure[2] << 8) | measure[3]
print "Vtotal = ", Vtotal
Hactive = (measure[4] << 8) | measure[5]
print "Hactive = ", Hactive
Vactive = (measure[6] << 8) | measure[7]
print "Vactive = ", Vactive
Hstart = (measure[8] << 8) | measure[9]
print "Hstart = ", Hstart
Vstart = (measure[10] << 8) | measure[11]
Hsync = (measure[12] << 8) | measure[13]
print "Hsync = ", Hsync
Vsync = (measure[14] << 8) | measure[15]
print "Vsync = ", Vsync
Vback = Vstart - Vsync
print "Vback = ", Vback
Vfront = Vtotal - Vactive - Vsync - Vback
print "Vfront = ", Vfront
board.WriteI2C(desAlias0, 0x41, 0x70)
board.WriteI2C(desAlias0, 0x41, 0xA0)
print "FPD IV Link Layer Timing:"
board.WriteI2C(desAlias0, 0x40, 0x4B)
board.WriteI2C(desAlias0, 0x41, 0x39)
for x in range(0, 12, 1):
measure[x] = board.ReadI2C(desAlias0, 0x42)
Stream0 = (measure[1] << 8) | measure[0]
Stream1 = (measure[3] << 8) | measure[2]
Stream2 = (measure[5] << 8) | measure[4]
Stream3 = (measure[7] << 8) | measure[6]
Stream4 = (measure[9] << 8) | measure[8]
Stream5 = (measure[11] << 8) | measure[10]
print "Stream 0 Hactive = ", Stream0
print "Stream 1 Hactive = ", Stream1
print "Stream 2 Hactive = ", Stream2
print "Stream 3 Hactive = ", Stream3
print "Stream 4 Hactive = ", Stream4
print "Stream 5 Hactive = ", Stream5
if SER == "Ux983":
print "-------------------------"
print "Ux983_APB_dump"
Ux983_APBs(0)
if SER == "HH983":
print "-------------------------"
print "HH983_APB_dump"
HH983_APBs()
Ux98x_SERDES_Full_Diagnostics()
time.sleep(0.1)一级供应商是合微健创,新的设计,串行器是DS90UB983-Q1、解串器是SNLS607A_DS90UB984-Q1,FPD-Link Ⅳ模式,屏幕参数如图所示,24位色深,现在还未调通,使用984打pattern屏幕能出图,证明984到屏幕的链路是通的,但983打pattern,屏幕未出图。是在室温开发板上测试的。已正确将视频流映射到DP1,因为984打pattern就是配置的DP1,DP信号设置的4lane和2.7G速率
下面是您提供的脚本记录故障模式发生时的情况Lock / Link Status
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0x2c , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x5
----------------------------------
VP Status
VP_STATUS: 12 , VP_INTERRUPTS: 17
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 12 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
VP_STATUS: 1 , VP_INTERRUPTS: 16
----------------------------------
DPRX Status
810 Rate
4 Lanes
0x30044
0x30044
0x4
0x0
Video source is set to SST mode
----------------------------------
H Res
0
H POL
0
H SYNC WIDTH
0
H BACK PORCH
0
H TOTAL
0
V Res
0
V POL
0
V SYNC WIDTH
0
V BACK PORCH
0
HV TOTAL
0
MSA_MISC0
0
MSA_MISC1
0
MSA_MVID
0
MSA_NVID
0
MSA_VBID
25
SYMBOL ERRORs - Lane 0
0x80000000L
SYMBOL ERRORs - Lane 1
0x80000000L
SYMBOL ERRORs - Lane 2
0x80000000L
SYMBOL ERRORs - Lane 3
0x80000000L
----------------------------------
DPTX Status
Page11 reg 0x93 = 0x0
No AUX Reply Detected
'DPCD addr 0x202 is 0xf4
'DPCD addr 0x203 is 0xa7
No AUX Reply Detected
'DPCD addr 0x202 is 0x83
'DPCD addr 0x203 is 0xf5
DPCD addr 0x100 is 0xfb
DPCD addr 0x101 is 0x66
----------------------------------
Des FIFO = 0x0
----------------------------------
DTG Port 0 Timing:
Htotal = 0
Vtotal = 0
Hactive = 11358
Vactive = 0
Hstart = 0
Hsync = 0
Vsync = 0
Vback = 0
Vfront = 0
----------------------------------
Print Des MSAs
('Port', 0, ': DPTX VIDEO RESOLUTION:')
('Port', 0, ': htotal (0x180) = 0')
('Port', 0, ': vtotal (0x184) = 0')
('Port', 0, ': hres (0x18C) = 0')
('Port', 0, ': vres (0x190) = 0')
('Port', 0, ': hstart (0x19C) = 0')
('Port', 0, ': vstart (0x1A0) = 0')
('Port', 0, ': hswidth (0x18C) = 0')
('Port', 0, ': vswidth (0x18C) = 0')
----------------------------------
Ux984 DPTX APBs
PORT 0 DPTX APB Dump: Main Stream Attributes
REG_000 (LINK_BW_SET) = 0
REG_004 (LANE_COUNT_SET) = 0
REG_008 (ENHANCED_FRAME_EN) = 1
REG_00C (TRAINING_PATTERN_SET) = 0
REG_010 (LINK_QUAL_PATTERN_SET) = 0
REG_014 (SCRAMBLING_DISABLE) = 44
REG_018 (DOWNSPREAD_CTRL) = 0
REG_01C (EDP_CAPABILITY_CONFIG) = 0
REG_020 (HBR2_COMPLIANCE_SCRAMBLER_RESET) = 0
REG_024 (DISPLAYPORT_VERSION) = 18
REG_024 (PHY_POWER_STATE) = 0
REG_02C (LANE_REMAP_CONTROL) = 0
REG_030 (CUSTOM_80BIT_PATTERN_0) = 0
REG_034 (CUSTOM_80BIT_PATTERN_1) = 0
REG_038 (CUSTOM_80BIT_PATTERN_2) = 0
REG_060 (FEC_ENABLE) = 0
REG_080 (TRANSMITTER_OUTPUT_ENABLE) = 0
REG_084 (VIDEO_STREAM_ENABLE) = 0
REG_088 (SECONDARY_STREAM_ENABLE) = 0
REG_088 (SECONDARY_DATA_WINDOW) = 128
REG_090 (SOFT_RESET) = 0
REG_094 (INPUT_SOURCE_ENABLE) = 0
REG_098 (FEC_ENABLE) = 0
REG_0C0 (ORCE_SCRAMBLER_RESET) = 44
REG_0C4 (USER_CONTROL_STATUS) = 0
REG_0C8 (USER_DATA_CONTROL) = 537141252
REG_0F8 (CORE_CAPABILITIES) = 5636
REG_0FC (CORE_ID) = 656648
REG_100 (AUX_COMMAND) = 2304
REG_104 (AUX_WRITE_FIFO) = 0
REG_108 (AUX_ADDRESS) = 257
REG_10C (AUX_CLOCK_DIVIDER) = 0
REG_110 (AUX_REPLY_TIMEOUT_INTERVAL) = 400
REG_128 (SINK_HPD_STATE) = 0
REG_130 (INTERRUPT_STATE) = 0
REG_134 (AUX_REPLY_DATA) = 66
REG_138 (AUX_REPLY_CODE) = 0
REG_13C (AUX_REPLY_COUNT) = 738197504
REG_140 (INTERRUPT_STATUS) = 0
REG_144 (INTERRUPT_MASK) = 63
REG_148 (REPLY_DATA_COUNT) = 0
REG_14C (AUX_STATUS) = 20
REG_150 (AUX_REPLY_CLOCK_WIDTH) = 0
REG_154 (AUX_WAKE_ACK_DETECTED) = 0
REG_158 (GP_HOST_TIMER) = 0
STREAM: 0 Register Read:
REG_0180 (MAIN_STREAM_HTOTAL) = 0
REG_0184 (MAIN_STREAM_VTOTAL) = 0
REG_0188 (MAIN_STREAM_POLARITY) = 0
REG_018C (MAIN_STREAM_HSWIDTH) = 0
REG_0190 (MAIN_STREAM_VSWIDTH) = 0
REG_0194 (MAIN_STREAM_HRES) = 0
REG_0198 (MAIN_STREAM_VRES) = 0
REG_019C (MAIN_STREAM_HSTART) = 2883584
REG_01A0 (MAIN_STREAM_VSTART) = 0
REG_01A4 (MAIN_STREAM_MISC0) = 0
REG_01A8 (MAIN_STREAM_MISC1) = 0
REG_01AC (MVID) = 0
REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = 11328
REG_01B4 (NVID) = 0
REG_01B8 (USER_PIXEL_COUNT) = 1
REG_01BC (USER_DATA_COUNT) = 0
REG_01C0 (MAIN_STREAM_INTERLACED) = 0
REG_01C4 (USER_SYNC_POLARITY) = 15
REG_01C8 (USER_CONTROL) = 0
REG_01CC (USER_CONTROL) = 2883584
REG_0500 (MST_ENABLE) = 0
REG_0504 (MST_PID_TABLE_INDEX) = 0
REG_0508 (MST_PID_TABLE_ENTRY) = 0
REG_050C (SST_SOURCE_SELECT) = 0
REG_0510 (MST_ALLOCATION_TRIGGER) = 0
REG_0514 (MST_PID_TABLE_SELECT) = 0
REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = 0
REG_0520 (MST_ACTIVE) = 0
REG_0524 (MST_LINK_FRAME_COUNT) = 0
REG_0528 (MSO_CONFIGURATION) = 0
REG_0528 (MSO_CONFIGURATION) = 0
STREAM: 0 Register Read:
REG_0180 (MAIN_STREAM_HTOTAL) = 0
REG_0184 (MAIN_STREAM_VTOTAL) = 0
REG_0188 (MAIN_STREAM_POLARITY) = 0
REG_018C (MAIN_STREAM_HSWIDTH) = 0
REG_0190 (MAIN_STREAM_VSWIDTH) = 0
REG_0194 (MAIN_STREAM_HRES) = 0
REG_0198 (MAIN_STREAM_VRES) = 0
REG_019C (MAIN_STREAM_HSTART) = 0
REG_01A0 (MAIN_STREAM_VSTART) = 0
REG_01A4 (MAIN_STREAM_MISC0) = 0
REG_01A8 (MAIN_STREAM_MISC1) = 0
REG_01AC (MVID) = 0
REG_01B0 (TRANSFER_UNIT_CONFIG_SRC_0) = 64
REG_01B4 (NVID) = 0
REG_01B8 (USER_PIXEL_COUNT) = 1
REG_01BC (USER_DATA_COUNT) = 0
REG_01C0 (MAIN_STREAM_INTERLACED) = 0
REG_01C4 (USER_SYNC_POLARITY) = 15
REG_01C8 (USER_CONTROL) = 0
REG_0500 (MST_ENABLE) = 0
REG_0504 (MST_PID_TABLE_INDEX) = 0
REG_0508 (MST_PID_TABLE_ENTRY) = 738197504
REG_050C (SST_SOURCE_SELECT) = 0
REG_0510 (MST_ALLOCATION_TRIGGER) = 0
REG_0514 (MST_PID_TABLE_SELECT) = 0
REG_0518 (MST_ACTIVE_PAYLOAD_TABLE) = 0
REG_0520 (MST_ACTIVE) = 0
REG_0524 (MST_LINK_FRAME_COUNT) = 0
REG_0528 (MSO_CONFIGURATION) = 0
REG_0528 (MSO_CONFIGURATION) = 0
-------------------------
Ux983_APB_dump
0x0 0x1
0x4 0x64
0x8 0x0
0xc 0x0
0x10 0x0
0x14 0x0
0x18 0x4
0x1c 0x14
0x20 0xc00
0x24 0x0
0x28 0x2f
0x2c 0x0
0x30 0x0
0x34 0x0
0x38 0xc
0x3c 0x0
0x40 0x0
0x44 0xc
0x48 0x0
0x4c 0x0
0x50 0x0
0x54 0x0
0x58 0x0
0x5c 0x0
0x60 0x0
0x64 0x0
0x68 0x0
0x6c 0x0
0x70 0x4
0x74 0xa
0x78 0x0
0x7c 0xc0000
0x80 0x1
0x84 0x0
0x88 0x0
0x8c 0x0
0x90 0x0
0x94 0x0
0x98 0x0
0x9c 0x0
0xa0 0x0
0xa4 0x0
0xa8 0x5
0xac 0x0
0xb0 0x0
0xb4 0x0
0xb8 0x0
0xbc 0x0
0xc0 0x0
0xc4 0x0
0xc8 0x0
0xcc 0x0
0xd0 0x0
0xd4 0x0
0xd8 0x1f02
0xdc 0xc0000
0xe0 0x0
0xe4 0x0
0xe8 0x0
0xec 0x2
0xf0 0x0
0xf4 0x0
0xf8 0x123404
0xfc 0xb0507
0x100 0xc
0x104 0x0
0x108 0x0
0x10c 0x0
0x110 0x0
0x114 0xc
0x118 0xc0000
0x11c 0x0
0x120 0x0
0x124 0x0
0x128 0x0
0x12c 0x0
0x130 0x0
0x134 0x0
0x138 0x0
0x13c 0x0
0x140 0x0
0x144 0x0
0x148 0x0
0x14c 0x0
0x150 0x0
0x154 0x0
0x158 0x0
0x15c 0xc00
0x160 0x0
0x164 0x0
0x168 0x0
0x16c 0xc
0x170 0x0
0x174 0xc000000
0x178 0x0
0x17c 0x0
0x180 0xfffffffeL
0x184 0x810
0x188 0x0
0x18c 0x310183
0x190 0x59
0x194 0x0
0x198 0xc0079
0x19c 0xc0000
0x1a0 0x7f
0x1a4 0xc0000
0x1a8 0x7f
0x1ac 0x0
0x1b0 0x0
0x1b4 0x0
0x1b8 0x0
0x1bc 0x0
0x1c0 0x0
0x1c4 0xc00
0x1c8 0x0
0x1cc 0x0
0x1d0 0x0
0x1d4 0x0
0x1d8 0x0
0x1dc 0x0
0x1e0 0x0
0x1e4 0x0
0x1e8 0x0
0x1ec 0x0
0x1f0 0x0
0x1f4 0x0
0x1f8 0x0
0x1fc 0x0
0x200 0x0
0x204 0x0
0x208 0xc
0x20c 0x0
0x210 0x0
0x214 0x2
0x218 0x0
0x21c 0x0
0x220 0x0
0x224 0x0
0x400 0x1e
0x404 0x4
0x408 0x1
0x40c 0x0
0x410 0x0
0x414 0x0
0x418 0x0
0x41c 0x0
0x420 0x0
0x424 0x0
0x428 0x0
0x42c 0x0
0x430 0x0
0x434 0x1
0x438 0x1
0x43c 0x30044
0x440 0x30044
0x444 0x0
0x448 0x0
0x44c 0x0
0x450 0x0
0x454 0x2020202
0x458 0x0
0x45c 0x0
0x460 0x0
0x464 0x0
0x468 0x0
0x46c 0x0
0x470 0x0
0x474 0x0
0x478 0x0
0x47c 0x0
0x480 0x0
0x484 0x3f3f3f3f
0x488 0x0
0x48c 0x0
0x490 0x80000000L
0x494 0x80000000L
0x498 0x80000000L
0x49c 0x80000000L
0x4a0 0x0
0x4a4 0x0
0x4a8 0x0
0x4ac 0x0
0x4b0 0x0
0x4b4 0x0
0x4b8 0x0
0x4bc 0x0
0x4c0 0x0
0x4c4 0x0
0x4c8 0x0
0x4cc 0x0
0x4d0 0x0
0x4d4 0x0
0x4d8 0x0
0x4dc 0x0
0x4e0 0x0
0x4e4 0x0
0x4e8 0x0
0x4ec 0x0
0x4f0 0x0
0x4f4 0x0
0x4f8 0x0
0x4fc 0x0
0x500 0x0
0x504 0x0
0x508 0x0
0x50c 0xc0000
0x510 0x0
0x514 0x0
0x518 0x0
0x51c 0x0
0x520 0x0
0x524 0x0
0x528 0x0
0x52c 0x0
0x530 0x0
0x534 0x0
0x538 0x19
0x53c 0xc00
0x700 0x0
0x704 0x0
0x708 0x0
0x70c 0x0
0x710 0x0
0x714 0x0
0x718 0x0
0x71c 0x0
0x720 0x0
0x800 0x0
0x804 0x0
0x808 0x0
0x80c 0x0
0x810 0x0
0x814 0x270
0x818 0x0
0x81c 0x2
0x820 0x90
0x824 0x270
0x828 0x0
0x82c 0x0
0x830 0x0
0x834 0x0
0x838 0x0
0x83c 0x0
0x840 0x0
0x844 0x0
0x848 0x0
0x84c 0x0
0x850 0x0
0x854 0x0
0x858 0x0
0x85c 0x0
0x860 0x0
0x864 0x0
0x868 0x0
0x86c 0x0
0x870 0x0
0x874 0x0
0x878 0x0
0x87c 0x0
0x880 0x0
0x884 0x0
0x888 0x0
0x88c 0xc00
0x890 0x0
0x894 0x0
0x898 0x0
0x89c 0x0
0x8a0 0x0
0x8a4 0x0
0x8a8 0x0
0x8ac 0x0
0x8b0 0x0
0x8b4 0x0
0x8b8 0x0
0x8bc 0x0
0x8c0 0x0
0x8c4 0x0
0x8c8 0x0
0x8cc 0x0
0x8d0 0x0
0x8d4 0x0
0x8d8 0x0
0x8dc 0x0
0x8e0 0x0
0x8e4 0x0
0x8e8 0x0
0x8ec 0x0
0x8f0 0x0
0x8f4 0x0
0x8f8 0x0
0x8fc 0x0
0x900 0x0
0x904 0x0
0x908 0x0
0x90c 0x0
0x910 0x0
0x914 0x0
0x918 0x0
0x91c 0x0
0x920 0xc000000
0x924 0x0
0x928 0x0
0x92c 0x0
0x930 0x0
0x934 0x0
0xa00 0x1
0xa04 0x4
0xa08 0x0
0xa0c 0x0
0xa10 0x0
0xa14 0x1
0xa18 0x5
0xa1c 0x8
0xa20 0xf
0xa24 0x1ff003f
0xa28 0x20
0xa2c 0xc0000
0xa30 0x78
0xa34 0x0
0xa38 0x0
0xa3c 0x0
0xa40 0x0
0xa44 0x0
0xa48 0x0
0xa4c 0x0
0xa50 0x0
0xa54 0x0
0xa58 0x0
0xa5c 0x0
0xa60 0x0
0xa64 0x0
0xa68 0x0
0xa6c 0x0
0xa70 0x0
0xa74 0x0
0xa78 0x0
0xa7c 0x0
0xa80 0x1
0xa84 0x0
0xa88 0x0
0xa8c 0x18
0xa90 0x4
0xa94 0x0
0xa98 0x0
0xa9c 0x76543210
0xaa0 0x0
0xaa4 0x0
0xaa8 0x0
0xaac 0x0
0xab0 0x0
0xab4 0x1
0xab8 0x0
0xabc 0x0
0xac0 0x0
0xac4 0x0
0xac8 0x0
0xacc 0x0
0xad0 0x0
0xad4 0x0
0xad8 0x0
0xadc 0x0
0xae0 0x0
0xae4 0x0
0xae8 0x2
0xaec 0x0
0xaf0 0x0
0xaf4 0x0
0xaf8 0x0
0xafc 0x0
0xb00 0x0
0xb04 0x4
0xb08 0x0
0xb0c 0x0
0xb10 0x0
0xb14 0x0
0xb18 0x0
0xb1c 0x8
0xb20 0xf
0xb24 0x1ff003f
0xb28 0xf000f
0xb2c 0x0
0xb30 0x78
0xb34 0xc0000
0xb38 0x0
0xb3c 0x0
0xb40 0x0
0xb44 0x0
0xb48 0x0
0xb4c 0x0
0xb50 0x0
0xb54 0x0
0xb58 0x0
0xb5c 0x0
0xb60 0x0
0xb64 0x0
0xb68 0x0
0xb6c 0x0
0xb70 0x0
0xb74 0x0
0xb78 0x0
0xb7c 0x0
0xb80 0x0
0xb84 0xc000001
0xb88 0x0
0xb8c 0x0
0xb90 0x0
0xb94 0x0
0xb98 0x0
0xb9c 0xc0000
0xba0 0x0
0xba4 0x0
0xba8 0x0
0xbac 0x0
0xbb0 0x0
0xbb4 0x0
0xbb8 0x0
0xbbc 0x0
0xbc0 0xc00
0xbc4 0x0
0xbc8 0x0
0xbcc 0x0
0xbd0 0x0
0xbd4 0x0
0xbd8 0xc00
0xbdc 0x0
0xbe0 0x0这是我们的配置"""
Copyright (C) 2021 Texas Instruments Incorporated - http://www.ti.com/
ALL RIGHTS RESERVED
"""
"""
Global Setups - Do Not Change
"""
FPD4 = [0,0]
FPD4Rate = [0,0]
FPD3Stream = [0,0]
THW = [0,0,0,0]
TVW = [0,0,0,0]
AHW = [0,0,0,0]
AVW = [0,0,0,0]
HBP = [0,0,0,0]
VBP = [0,0,0,0]
HSW = [0,0,0,0]
VSW = [0,0,0,0]
HFP = [0,0,0,0]
VFP = [0,0,0,0]
HSP = [0,0,0,0]
VSP = [0,0,0,0]
PCLK = [0,0,0,0]
Bits_per_pixel = [0,0,0,0]
PATGEN = [0,0,0,0]
CropEnable = [0,0,0,0]
FilterEnable = [0,0,0,0]
CropXStart = [0,0,0,0]
CropXStop = [0,0,0,0]
CropYStart = [0,0,0,0]
CropYStop = [0,0,0,0]
FilterEnable = [0,0,0,0]
FilterA = [0,0,0,0]
FilterN = [0,0,0,0]
DSI_PORT0 = 0
DSI_PORT1 = 0
MAPSEL = [0,0]
OLDIBpp = [0,0]
HDCP_FPD3 = [0,0]
Des0_DaisyVPs = [0,0,0,0]
FPD4RateDaisy0 = [0,0,0]
FPD4RateDaisy1 = [0,0,0]
FPD4Daisy0 = [1,1]
DP0_ON = [0,0,0,0]
DP1_ON = [0,0,0,0]
DP_Output_0_Source = [0,0,0,0]
DP_Output_1_Source = [0,0,0,0]
Des_Device = [0,0,0,0]
DP_Rate = [0,0,0,0]
DP_Lane_Num = [0,0,0,0]
RGBMode = [0,0,0,0]
OLDIEnabled = [0,0,0,0]
MAPSEL0 = [0,0,0,0]
MAPSEL1 = [0,0,0,0]
RGBBpp = [0,0,0,0]
OLDIBpp0 = [0,0,0,0]
OLDIBpp1 = [0,0,0,0]
OLDI_RGB_Port0_Source = [0,0,0,0]
OLDI_Port1_Source = [0,0,0,0]
DaisyConf = [0,0,0,0]
FPD4LinkEN0 = [0,0,0,0]
FPD4LinkEN1 = [0,0,0,0]
DES_Display_SSCG = [0,0,0,0]
DES_Display_SSCG_FDEV = [0,0,0,0]
DES_Display_SSCG_FMOD = [0,0,0,0]
serFPDSSCG = [0,0]
serFPDSSCG_fdev = [0,0]
serFPDSSCG_fmod = [0,0]
eFuseOV = 0
FPD3DaisyVP_P0 = [0,0,0]
FPD3DaisyVP_P1 = [0,0,0]
DES_BC_SSCG = [0,0,0,0]
DES_BC_SSCG_FDEV = [0,0,0,0]
DES_BC_SSCG_FMOD = [0,0,0,0]
DP_Stream_BPP = [0,0]
MST_Source = [0,0,0,0]
DES_FC_SSCG = [0,0,0]
DES_FC_SSCG_FDEV = [0,0,0]
DES_FC_SSCG_FMOD = [0,0,0]
disable_FIFO_errata = 0
Override_Color = 0
"""
General Configurations - Set by the user
"""
# Serializer Address
# Ignore if using DES only configurations
SER_Address = 0x18
# First deserializer Address Port 0
# For dual FPD-Link configurations use this address for the first deserializer. P1 addresses are ignored
# For single port 0 or independent FPD configurations this is the address of the first DES attached to port 0
DES0_Address = 0x58
DES0_Alias = 0x58
# First deserializer Address Port 1
# Only used for single port 1 or independent FPD link configurations
P1DES0_Address = 0x58
P1DES0_Alias = 0x5c
# Deserializer Daisy Chain Addresses
DES1_Address = 0x58
DES1_Alias = 0x5e
DES2_Address = 0x58
DES2_Alias = 0x60
DES3_Address = 0x58
DES3_Alias = 0x62
# Serializer Device
# For FPD IV serializer, options are 983 or 981, HH983_ES1.0, HH983_CS1.0
# For FPD III serializer, options are 925, 926, 921, 929, 949, 941AS, 947
Device = "983"
# DES eFuse Override Enable
# Enabling eFuse override will generate a script to
# manually override the eFuse settings for the DES
# to the final production version when using either 984 or 988
eFuseOV = 0
# If Des_Only = 1, 98x Serialzier configuration will be ignored but
# 94x/92x SER configuration will be included if Fes_FPD3_Only = 1
# Only applicable for configurations with 988/984 DES
# Use this setting when the SER is 94x or 92x FPD III or to generate a 98x to 98x script
# which only includes the DES side configurations
Des_Only = 0
# Select deserializer PatGen enable
# Only applicable for FPD IV DES configurations - ignore for FPD III DES configurations
# 0 = disable
# 1 = enable
DES_Patgen_on = 0
# Ignored for FPD IV configurations
# Set to 1 when using FPD IV serializer to FPD IV deserializer in FPD III link mode
# Set to 0 when using FPD III serializer to FPD IV deserializer
FPD4DES_FPD3MODE = 0
# Set the deserializer FPD port configuration
# Ignored if serializer is 98x
# Options:
# FPD3 Dual = 5
# FPD3 Single Port 0 = 6
DES_FPDIII_Conf = 5
# Set the serializer FPD port configuration
# Options:
# FPD4 Dual = 1
# FPD4 Single Port 0 = 2
# FPD4 Single Port 1 = 3
# FPD4 Independent = 4
# FPD3 Dual = 5
# FPD3 Single Port 0 = 6
# FPD3 Single Port 1 = 7
# FPD3 Independent = 8
# FPD4 Port 0/FPD3 Port 1 = 9
# FPD3 Port 0/FPD4 Port 1 = 10
FPDConf = 2
# Configure Y split daisy chain topology
# In Y split daisy chain mode, the SER connects to two DES
# One or both of the connected DES connect to another downstream DES via daisy chain
# In Y split daisy chain mode deserializers are numbered as follows:
# SER Port 0 -> DES0 -> DES2
# SER Port 1 -> DES1 -> DES3
# Options:
# 0: Straight line daisy chain mode: SER -> DES -> DES -> DES -> DES
# 1: Y Split daisy chain mode
y_split_daisy = 0
# Enable HDCP1.4 per FPD Channel in FPD III mode (Only applicable for UH to UH connections)
# Only used for FPD III mode
# Options: 0 = No HDCP, 1 = HDCP Enabled
# HDCP[0] controls FPD port 0
# HDCP[1] controls FPD port 1
# Unused FPD ports are ignored and only the HDCP[0] setting is used for dual FPD modes
HDCP_FPD3[0] = 0
HDCP_FPD3[1] = 0
# Enter number of VPs used
# Options:
# 1 Display = 1 (VP0)
# 2 Displays = 2 (VP0/VP1)
# 3 Displays = 3(VP0/VP1/VP2)
# 4 Displays = 4 (VP0/VP1/VP2/VP3)
numVPs = 1
# Enter Video Processor 0 Properties
# THW = Horizontal Total Pixels = AHW + HBP + HFP + HSW
# TVW = Vertical Total Lines = AVW + VBP + VFP + VSW
# AHW = Hoizontal Active Pixels
# AVW = Vertical Active Lines
# HBP = Horizontal Back Porch Pixels
# VBP = Vertical Back Porch Pixels
# HSW = Horizontal Sync Width Pixels
# VSW = Vertical Sync Width Lines
# HSP = Horizontal Sync Polarity: 0 = Positive, 1 = Negative
# VSP = Vertical Sync Polarity: 0 = Positive, 1 = Negative
# PCLK = Pixel Clock Rate in MHz
# Bits_per_pixel = 18, 24, or 30 (30bpp only available for FPD IV)
# PATGEN = 1 - Generate PATGEN from the VP
# PATGEN = 0 - Configure the VP but don't enable PATGEN (use for end to end video)
# If Des is set to FPD3 mode only, VP0 timing is used to configure Des.
THW[0] = 2768
TVW[0] = 1652
AHW[0] = 2560
AVW[0] = 1600
HBP[0] = 60
VBP[0] = 18
HSW[0] = 60
VSW[0] = 2
HFP[0] = THW[0] - AHW[0] - HBP[0] - HSW[0]
VFP[0] = TVW[0] - AVW[0] - VBP[0] - VSW[0]
HSP[0] = 0
VSP[0] = 0
PCLK[0] = 274.3
Bits_per_pixel[0] = 24
PATGEN[0] = 1
# Crop and filter parameters (Optional - Ignored if CropEnable[x] is 0)
CropEnable[0] = 0
CropXStart[0] = 0
CropXStop[0] = 1399
CropYStart[0] = 0
CropYStop[0] = 1199
# Filter parameters (Optional - Ignored if FilterEnable[x] is 0)
FilterEnable[0] = 0
FilterA[0] = 1
FilterN[0] = 2
# Enter Video Processor 1 Properties (Optional)
THW[1] = 1650
TVW[1] = 750
AHW[1] = 1280
AVW[1] = 720
HBP[1] = 220
VBP[1] = 20
HSW[1] = 40
VSW[1] = 5
HFP[1] = THW[1] - AHW[1] - HBP[1] - HSW[1]
VFP[1] = TVW[1] - AVW[1] - VBP[1] - VSW[1]
HSP[1] = 0
VSP[1] = 0
PCLK[1] = 74.25
Bits_per_pixel[1] = 24
PATGEN[1] = 1
# Crop and filter parameters (Optional - Ignored if CropEnable[x] is 0)
CropEnable[1] = 0
CropXStart[1] = 1400
CropXStop[1] = 2799
CropYStart[1] = 0
CropYStop[1] = 1199
# Filter parameters (Optional - Ignored if FilterEnable[x] is 0)
FilterEnable[1] = 0
FilterA[1] = 1
FilterN[1] = 2
# Enter Video Processor 2 Properties (Optional)
THW[2] = 2020
TVW[2] = 590
AHW[2] = 1920
AVW[2] = 384
HBP[2] = 8
VBP[2] = 5
HSW[2] = 12
VSW[2] = 3
HFP[2] = THW[2] - AHW[2] - HBP[2] - HSW[2]
VFP[2] = TVW[2] - AVW[2] - VBP[2] - VSW[2]
HSP[2] = 0
VSP[2] = 0
PCLK[2] = 71.51
Bits_per_pixel[2] = 24
PATGEN[2] = 1
# Crop and filter parameters (Optional - Ignored if CropEnable[x] is 0)
CropEnable[2] = 1
CropXStart[2] = 2304
CropXStop[2] = 4223
CropYStart[2] = 0
CropYStop[2] = 383
# Filter parameters (Optional - Ignored if FilterEnable[x] is 0)
FilterEnable[2] = 0
FilterA[2] = 1
FilterN[2] = 2
# Enter Video Processor 3 Properties (Optional)
THW[3] = 2640
TVW[3] = 1500
AHW[3] = 2560
AVW[3] = 1440
HBP[3] = 40
VBP[3] = 40
HSW[3] = 32
VSW[3] = 10
HFP[3] = THW[3] - AHW[3] - HBP[3] - HSW[3]
VFP[3] = TVW[3] - AVW[3] - VBP[3] - VSW[3]
HSP[3] = 0
VSP[3] = 0
PCLK[3] = 100
Bits_per_pixel[3] = 24
PATGEN[3] = 0
# Crop and filter parameters (Optional - Ignored if CropEnable[x] is 0)
CropEnable[3] = 0
CropXStart[3] = 2560
CropXStop[3] = 3839
CropYStart[3] = 0
CropYStop[3] = 719
# Filter parameters (Optional - Ignored if FilterEnable[x] is 0)
FilterEnable[3] = 1
FilterA[3] = 1
FilterN[3] = 2
# Enter stream mapping for FPD3 Mode (ignored if using FPD4)
# Ignore map setting for unused port in single FPD3 mode
# If using dual mode, set FPD3Stream[0] and FPD3Stream[1] to the same VP
# Options: 0 = VP0, 1 = VP1, 2 = VP2, 3 = VP3: Maps the corresponding VP to the FPD3 port
FPD3Stream[0] = 0
FPD3Stream[1] = 0
# FPD4 Rate Selection (Gbps)
# Ignored if the port is set to FPD3 mode
# FPD4Rate[0] sets FPD TX Port 0
# FPD4Rate[1] sets FPD TX Port 1
# Options: 3.375, 6.75, 10.8, 13.5, 12.528
FPD4Rate[0] = 13.5
FPD4Rate[1] = 13.5
# FPD4 Port SSCG Configuration
# serFPDSSCG[0] controls FPD Port 0
# serFPDSSCG[1] controls FPD Port 1
# Options:
# 0 = Disabled
# 1 = Enable SSCG Center Spread
# 2 = Enable SSCG Down Spread
serFPDSSCG[0] = 0
serFPDSSCG[1] = 0
# Serializer SSCG FDEV %
# serFPDSSCG_fdev[0] controls FPD Port 0
# serFPDSSCG_fdev[1] controls FPD Port 1
# Ignored is serFPDSSCG = 0
# Sets the SSCG frequency deviation percentage for FPD4 port 0
# Options: 0-0.5 (%)
serFPDSSCG_fdev[0] = 0.5
serFPDSSCG_fdev[1] = 0.5
# Display SSCG FMOD kHz
# serFPDSSCG_fmod[0] controls FPD Port 0
# serFPDSSCG_fmod[1] controls FPD Port 1
# Ignored is DES_Display_SSCG = 0
# Set the SSCG modulation frequency for display interface SSCG
# Options: 30-33 (kHz)
serFPDSSCG_fmod[0] = 33
serFPDSSCG_fmod[1] = 33
# FPD4 Link Layer Selection for independent FPD IV Mode or mixed FPD III/IV modes
# Ignored for dual FPD IV or single FPD IV modes
# Select which VPs are forwarded to FPD Port 0 and Port 1 Link layers
# FPD4LinkEN0 controls SER FPD Port 0
# FPD4LinkEN1 controls SER FPD Port 1
# For example, to send VP 0 to port 0 and VP1 to port 1, use the following
# Note that in order to send any stream to both FPD ports, the FPD IV links rate must be the same
# FPD4LinkEN0 = [1,0,0,0]
# FPD4LinkEN1 = [0,1,0,0]
FPD4LinkEN0 = [1,0,0,0]
FPD4LinkEN1 = [0,1,0,0]
"""
983 Configs - Ignored if using 981
"""
# Disable DP FIFO Errata for debug
# Set to 1 in order to disable DP FIFO errata. The FIFO errata will restrict 983 operation to only the
# configured lane rate/lane count settings below. If the DP source lane count/rate are unknown or variable,
# disable the FIFO errata to test. TI recommends to apply the errata for optimal performance on production systems
disable_FIFO_errata = 1
# Set max DP lane count
# Options: 1, 2, 4
# Note - for UH983 or UB983, this setting must be set to the desired lane count for DP FIFO errata to execute sucessfully
DPlanes = 4
# Set max advertised DP lane rate in Gbps
# Options: 1.62, 2.7, 5.4, 8.1
# Note - for UH983 or UB983, this setting must be set to the desired link rate for DP FIFO errata to execute sucessfully
maxRate = 2.7
# Set MST or SST mode
# Options: 0 = SST mode, 1 = MST mode
# MST mode always uses VP0 for MST0 and VP1 for MST1
MST = 0
# Set which MST stream is mapped to each video processor
# Only used when MST = 1
# Options:
# 0: Video processor is mapped to MST0
# 1: Video processor is mapped to MST1
# Assignments: [VP0,VP1,VP2,VP3]
MST_Source = [0,1,0,0]
# Set DP receiver to expect SSC or no SSC from the DPTX
# This setting also configures the MAX_DOWNSPREAD capability bit in DPCD 0x00003[0]
# Options: 0 = No SSC, 1 = SSC
SSC = 0
#Set DP receiver to DP or eDP mode
# Options: 0 = DP Mode, 1 = eDP Mode
eDP = 0
# Set DP Stream BPP (Mandatory for HH983 ES1.0 and CS1.0, Optional for Ux983)
# Options: 30, 24, 18
# For SST, only stream 0 is used [stream0,0]
# For MST, format is [stream0,stream1]
# Example: Stream 0 is 24 bpp, Stream 1 is 30bpp
# Example Setting: [24,30]
DP_Stream_BPP = [24,24]
# Optional setting for Ux983 to override colorimetry for incoming streams
# When enabled, the SER will ignore colorimetry information from MSA
# and use the DP_Stream_BPP setting instead. This setting can improve error tolerance
# in high noise environments. CAUTION: The DP_Stream_BPP setting must match the colorimetry
# from the incoming video source, otherwise video distrotion or video wrap around will occur
Override_Color = 0
# EDID Options (SST only)
# Options:
# 0: EDID Support Disabled
# 1: EDID location = Internal SRAM using I2C1 bus
# 2: EDID location = Internal SRAM using I2C2 bus
# 3: EDID location = External EEPROM on HH983 I2C0 bus
# 4: EDID location = External EEPROM on HH983 I2C1 bus
# 5: EDID location = External EEPROM on HH983 I2C2 bus
# Note that the Internal SRAM EDID Example EDID included with the generated config for option 1
# does not change based on the VP settings. Custom EDIDs can be generated with external
# off the shelf free tools to replace the example EDID if needed
EDID = 0
# EDID 8-bit I2C Address (HH983 only)
EDID_ADDR = 0xA0
"""
981 Configs - Ignored if using 983
"""
#DSI ports active
# 0 = DSI 0 only
# 1 = DSI 1 only
# 2 = DSI 0 and DSI 1
DSI_PORTS_ACTIVE = 0
# Set max DSI lane count
# Options: 1, 2, 3, 4
Port0_DSI_Lanes = 4
Port1_DSI_Lanes = 4
# Set DSI in Continuous or Non-Continuous Clock
# 1 = Continuous ; 0 = Non-Continuous Clock
Port0_Contin = 1
Port1_Contin = 1
# Set the DSI rate
# example: 500 Mbps= 500, 1.2 Gbps = 1200Mbps
Port0_DSI_Rate = 891
Port1_DSI_Rate = 891
#DSI Source for Video Processors
#0 = DPHY 0 virtual Channel 0
#1 = DPHY 0 virtual Channel 1
#2 = DPHY 0 virtual Channel 2
#3 = DPHY 0 virtual Channel 3
#4 = DPHY 1 virtual Channel 0
#5 = DPHY 1 virtual Channel 1
#6 = DPHY 1 virtual Channel 2
#7 = DPHY 1 virtual Channel 3
VP_0_Source = 0
VP_1_Source = 0
VP_2_Source = 0
VP_3_Source = 0
"""
#####################################
DES0 (First Deserialzier) Configurations - Ignored for FPD III Modes
This section is referenced for FPD IV Dual mode or Single FPD IV Port 0 mode (NOT FPD IV Single Port 1 Mode)
#####################################
"""
# Des_Device
# Only used for FPD IV deserializer configurations - ignore if using FPD III deserializer
# Options 984, 988, HH984_CS1.0
Des_Device[0] = "984"
# Set the deserializer Daisy Chain TX FPD port configuration
# Options:
# Daisy Chaining Disabled = 0
# FPD4 Dual = 1
# FPD4 Single Port 0 = 2
# FPD4 Single Port 1 = 3 # Net yet functional
# FPD4 Independent = 4 # Net yet functional
# FPD3 Dual = 5
# FPD3 Single Port 0 = 6
# FPD3 Single Port 1 = 7
# FPD3 Independent = 8
# FPD4 Port 0/FPD3 Port 1 = 9 # Net yet functional
# FPD3 Port 0/FPD4 Port 1 = 10 # Net yet functional
DaisyConf[0] = 0
# Enable daisy chain TX forwarding for deserializer 0 (first DES in the chain)
# Set VPs 0-4 = 1 to enable forwarding of that VP to the next DES
# If all VP forwarding is set to 0, then daisy chaining is disabled
# Example: Forward only VP0 to the next DES: Des0_DaisyVPs = [1,0,0,0]
# Example Forward VP1 and VP2 to the next DES: Des0_DaisyVPs = [0,1,1,0]
Des0_DaisyVPs = [0,1,0,0]
# Set which VP is forwarded to chain chain output in FPD III mode
# FPD3DaisyVP_P0 controls daisy chain FPD port 0
# FPD3DaisyVP_P1 controls daisy chain FPD port 1
# FPD3DaisyVP_P0 and FPD3DaisyVP_P1 must be set to the same VP for dual FPD III mode
# Setting the daisy chain output to FPD III mode terminates the daisy chain at the connected deserializer
# This is ignored if the daisy chain is set up for FPD IV output mode
# Example: Forward VP1 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 1
# Example: Forward VP3 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 3
FPD3DaisyVP_P0[0] = 1
FPD3DaisyVP_P1[0] = 1
# FPD4 Rate Selection for DES0 Daisy Chain TX (Gbps)
# Ignored if the port is set to FPD3 mode
# FPD4RateDaisy0[0] sets DES0 Daisy Chain TX Port 0
# FPD4RateDaisy1[0] sets DES0 Daisy Chain TX Port 1
# Options: 3.375, 6.75, 10.8, 13.5, 12.528
FPD4RateDaisy0[0] = 6.75
FPD4RateDaisy1[0] = 6.75
# DES Daisy Chain FC SSCG Configuration
# SSCG options for the deserializer forward channel output
# Options:
# 0 = Disable SSCG on FPD forward channel daisy chain interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCg with Down Spread
DES_FC_SSCG[0] = 0
# FPD Daisy Chain FC SSCG FDEV %
# Ignored is DES_FC_SSCG = 0
# Sets the SSCG frequency deviation percentage for daisy chain forward channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_FC_SSCG_FDEV[0] = 0.25
# DES Daisy Chain SSCG FMOD kHz
# Ignored is DES_FC_SSCG = 0
# Set the SSCG modulation frequency for daisy chain forward channel interface SSCG
# Options: 30-33 (kHz)
DES_FC_SSCG_FMOD[0] = 33
# FPD BC SSCG Configuration
# SSCG options for the deserializer back channel output
# Options:
# 0 = Disable SSCG on FPD back channel interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_BC_SSCG[0] = 0
# FPD BC SSCG FDEV %
# Ignored is DES_BC_SSCG = 0
# Sets the SSCG frequency deviation percentage for FPD back channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_BC_SSCG_FDEV[0] = 0.25
# FPD SSCG FMOD kHz
# Ignored is DES_BC_SSCG = 0
# Set the SSCG modulation frequency for FPD back channel interface SSCG
# Options: 30-33 (kHz)
DES_BC_SSCG_FMOD[0] = 33
# Display SSCG Configuration
# SSCG options for the deserializer display output (OLDI or DP/eDP Interface)
# This is independent of the FPD-Link SSCG
# Options:
# 0 = Disable SSCG on display interface
# 1 = Enable SSCG with Center Spread (988 only)
# 2 = Enable SSCG with Down Spread
DES_Display_SSCG[0] = 0
# Display SSCG FDEV %
# Ignored is DES_Display_SSCG = 0
# Sets the SSCG frequency deviation percentage for display interface SSCG
# Options: 0-6 (%) for 988 in Center Spread Mode (+/-3%)
# Options: 0-3 (%) for 988 in Down Spread Mode
# Options: 0-0.5 (%) for 984 (Down Spread Only)
DES_Display_SSCG_FDEV[0] = 0.5
# Display SSCG FMOD kHz
# Ignored is DES_Display_SSCG = 0
# Set the SSCG modulation frequency for display interface SSCG
# Options: 10-100 (kHz) for 988
# Options: 30-33 (kHz) for 984
DES_Display_SSCG_FMOD[0] = 33
"""
#####################################
DES0 (First Deserialzier) Configurations - Ignored for FPD III Modes
#####################################
"""
"""
DES0 984 Configs - Ignored if using 988
"""
#Select DP ports to be enabled
# Enabled = 1, Disabled = 0
DP0_ON[0] = 0
DP1_ON[0] = 1
#Select video source for DP output
#Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
DP_Output_0_Source[0] = 1
DP_Output_1_Source[0] = 0
# Select DP output lane rate and number of lanes
# Options (in Gbps):
# 1.62
# 2.7
# 5.4
# 8.1
DP_Rate[0] = 2.7
DP_Lane_Num[0] = 4
"""
DES0 988 Configs - Ignored if using 984
"""
# Select OLDI or RGB mode
# Options:
# 1 = RGB Mode Enabled
# 0 = OLDI Mode
RGBMode[0] = 0
# Select OLDI port configuration (Ignored for RGB mode)
# Options:
# 0 = Single OLDI port 0
# 1 = Single OLDI port 1
# 2 = Dual OLDI
# 3 = Dual OLDI Swap
OLDIEnabled[0] = 1
# Select MAPSEL Setting for port 0 and port 1 (Ignored for RGB mode)
# 0 = MAPSEL = L (LSB on D3/D4)
# 1 = MAPSEL = H (MSB on D3/D4)
MAPSEL0[0] = 1
MAPSEL1[0] = 1
# Set OLDI Bits Per Pixel for port 0 and 1 (Ignored in RGB mode)
# Options: 18, 24, 30
OLDIBpp0[0] = 24
OLDIBpp1[0] = 24
# Set RGB mode Bits Per Pixel (Ignored in OLDI mode)
RGBBpp[0] = 24
# Select video source for OLDI/RGB output
# Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# For Dual OLDI, use same stream for both ports
# OLDI_Port1_Source is ignored for single OLDI port 0 or RGB mode
# OLDI_RGB_Port0_Source is ignored for single OLDI port 1 mode
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
OLDI_RGB_Port0_Source[0] = 0
OLDI_Port1_Source[0] = 0
"""
#####################################
DES1 (Second Deserialzier) Configurations - Ignored for FPD III Modes
For Y-split (Independent FPD IV) configurations, DES1 is the device attached to SER TX port 1
For single port 1 FPD IV configurations, this is the device attached to SER TX port 1
#####################################
"""
# Des_Device
# Only used for FPD IV deserializer configurations - ignore if using FPD III deserializer
# Options 984, 988, HH984_CS1.0
Des_Device[1] = "988"
# Set the deserializer Daisy Chain TX FPD port configuration
# Options:
# Daisy Chaining Disabled = 0
# FPD4 Dual = 1
# FPD4 Single Port 0 = 2
# FPD4 Single Port 1 = 3 # Net yet functional
# FPD4 Independent = 4 # Net yet functional
# FPD3 Dual = 5
# FPD3 Single Port 0 = 6
# FPD3 Single Port 1 = 7
# FPD3 Independent = 8
# FPD4 Port 0/FPD3 Port 1 = 9 # Net yet functional
# FPD3 Port 0/FPD4 Port 1 = 10 # Net yet functional
DaisyConf[1] = 0
# Enable daisy chain TX forwarding for deserializer 1 (second DES in the chain)
# Set VPs 0-4 = 1 to enable forwarding of that VP to the next DES
# If all VP forwarding is set to 0, then daisy chaining is disabled
# Example: Forward only VP0 to the next DES: Des1_DaisyVPs = [1,0,0,0]
# Example Forward VP1 and VP2 to the next DES: Des1_DaisyVPs = [0,1,1,0]
Des1_DaisyVPs = [0,0,0,1]
# Set which VP is forwarded to chain chain output in FPD III mode
# FPD3DaisyVP_P0 controls daisy chain FPD port 0
# FPD3DaisyVP_P1 controls daisy chain FPD port 1
# FPD3DaisyVP_P0 and FPD3DaisyVP_P1 must be set to the same VP for dual FPD III mode
# Setting the daisy chain output to FPD III mode terminates the daisy chain at the connected deserializer
# This is ignored if the daisy chain is set up for FPD IV output mode
# Example: Forward VP1 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 1
# Example: Forward VP3 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 3
FPD3DaisyVP_P0[1] = 2
FPD3DaisyVP_P1[1] = 2
# FPD4 Rate Selection for DES1 Daisy Chain TX (Gbps)
# Ignored if the port is set to FPD3 mode
# FPD4RateDaisy0[1] sets DES1 Daisy Chain TX Port 0
# FPD4RateDaisy1[1] sets DES1 Daisy Chain TX Port 1
# Options: 3.375, 6.75, 10.8, 13.5, 12.528
FPD4RateDaisy0[1] = 3.375
FPD4RateDaisy1[1] = 3.375
# DES Daisy Chain FC SSCG Configuration
# SSCG options for the deserializer forward channel output
# Options:
# 0 = Disable SSCG on FPD forward channel daisy chain interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCg with Down Spread
DES_FC_SSCG[1] = 0
# FPD Daisy Chain FC SSCG FDEV %
# Ignored is DES_FC_SSCG = 0
# Sets the SSCG frequency deviation percentage for daisy chain forward channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_FC_SSCG_FDEV[1] = 0.25
# DES Daisy Chain SSCG FMOD kHz
# Ignored is DES_FC_SSCG = 0
# Set the SSCG modulation frequency for daisy chain forward channel interface SSCG
# Options: 30-33 (kHz)
DES_FC_SSCG_FMOD[1] = 33
# FPD BC SSCG Configuration
# SSCG options for the deserializer back channel output
# Options:
# 0 = Disable SSCG on FPD back channel interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_BC_SSCG[1] = 0
# FPD BC SSCG FDEV %
# Ignored is DES_BC_SSCG = 0
# Sets the SSCG frequency deviation percentage for FPD back channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_BC_SSCG_FDEV[1] = 0.25
# FPD SSCG FMOD kHz
# Ignored is DES_BC_SSCG = 0
# Set the SSCG modulation frequency for FPD back channel interface SSCG
# Options: 30-33 (kHz)
DES_BC_SSCG_FMOD[1] = 33
# Display SSCG Configuration
# SSCG options for the deserializer display output (OLDI or DP/eDP Interface)
# This is independent of the FPD-Link SSCG
# Options:
# 0 = Disable SSCG on display interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_Display_SSCG[1] = 0
# Display SSCG FDEV %
# Ignored is DES_Display_SSCG = 0
# Sets the SSCG frequency deviation percentage for display interface SSCG
# Options: 0-6 (%) for 988 in Center Spread Mode (+/-3%)
# Options: 0-3 (%) for 988 in Down Spread Mode
# Options: 0-0.5 (%) for 984 (Down Spread Only)
DES_Display_SSCG_FDEV[1] = 0.75
# Display SSCG FMOD kHz
# Ignored is DES_Display_SSCG = 0
# Set the SSCG modulation frequency for display interface SSCG
# Options: 10-100 (kHz) for 988
# Options: 30-33 (kHz) for 984
DES_Display_SSCG_FMOD[1] = 10
"""
#####################################
DES1 (Second Deserialzier) Configurations
#####################################
"""
"""
DES1 984 Configs - Ignored if using 988
"""
#Select DP ports to be enabled
# Enabled = 1, Disabled = 0
DP0_ON[1] = 1
DP1_ON[1] = 0
#Select video source for DP output
#Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
DP_Output_0_Source[1] = 1
DP_Output_1_Source[1] = 0
# Select DP output lane rate and number of lanes
# Options (in Gbps):
# 1.62
# 2.7
# 5.4
# 8.1
DP_Rate[1] = 2.7
DP_Lane_Num[1] = 4
"""
DES1 988 Configs - Ignored if using 984
"""
# Select OLDI or RGB mode
# Options:
# 1 = RGB Mode Enabled
# 0 = OLDI Mode
RGBMode[1] = 0
# Select OLDI port configuration (Ignored for RGB mode)
# Options:
# 0 = Single OLDI port 0
# 1 = Single OLDI port 1
# 2 = Dual OLDI
# 3 = Dual OLDI Swap
OLDIEnabled[1] = 0
# Select MAPSEL Setting for port 0 and port 1 (Ignored for RGB mode)
# 0 = MAPSEL = L (LSB on D3/D4)
# 1 = MAPSEL = H (MSB on D3/D4)
MAPSEL0[1] = 1
MAPSEL1[1] = 1
# Set OLDI Bits Per Pixel for port 0 and 1 (Ignored in RGB mode)
# Options: 18, 24, 30
OLDIBpp0[1] = 24
OLDIBpp1[1] = 24
# Set RGB mode Bits Per Pixel (Ignored in OLDI mode)
RGBBpp[1] = 24
# Select video source for OLDI/RGB output
# Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# For Dual OLDI, use same stream for both ports
# OLDI_Port1_Source is ignored for single OLDI port 0 or RGB mode
# OLDI_RGB_Port0_Source is ignored for single OLDI port 1 mode
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
OLDI_RGB_Port0_Source[1] = 1
OLDI_Port1_Source[1] = 1
"""
#####################################
DES2 (Third Deserialzier) Configurations
#####################################
"""
# Des_Device
# Only used for FPD IV deserializer configurations - ignore if using FPD III deserializer
# Options 984, 988, HH984_CS1.0
Des_Device[2] = "984"
# Set the deserializer Daisy Chain TX FPD port configuration
# Options:
# Daisy Chaining Disabled = 0
# FPD4 Dual = 1
# FPD4 Single Port 0 = 2
# FPD4 Single Port 1 = 3 # Net yet functional
# FPD4 Independent = 4 # Net yet functional
# FPD3 Dual = 5
# FPD3 Single Port 0 = 6
# FPD3 Single Port 1 = 7
# FPD3 Independent = 8
# FPD4 Port 0/FPD3 Port 1 = 9 # Net yet functional
# FPD3 Port 0/FPD4 Port 1 = 10 # Net yet functional
DaisyConf[2] = 0
# Enable daisy chain TX forwarding for deserializer 2 (third DES in the chain)
# Set VPs 0-4 = 1 to enable forwarding of that VP to the next DES
# If all VP forwarding is set to 0, then daisy chaining is disabled
# Example: Forward only VP0 to the next DES: Des2_DaisyVPs = [1,0,0,0]
# Example Forward VP1 and VP2 to the next DES: Des2_DaisyVPs = [0,1,1,0]
Des2_DaisyVPs = [0,0,0,1]
# Set which VP is forwarded to chain chain output in FPD III mode
# FPD3DaisyVP_P0 controls daisy chain FPD port 0
# FPD3DaisyVP_P1 controls daisy chain FPD port 1
# FPD3DaisyVP_P0 and FPD3DaisyVP_P1 must be set to the same VP for dual FPD III mode
# Setting the daisy chain output to FPD III mode terminates the daisy chain at the connected deserializer
# This is ignored if the daisy chain is set up for FPD IV output mode
# Example: Forward VP1 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 1
# Example: Forward VP3 to Daisy Chain Output in FPD III mode: FPD3DaisyVP[0] = 3
FPD3DaisyVP_P0[2] = 1
FPD3DaisyVP_P1[2] = 1
# FPD4 Rate Selection for DES2 Daisy Chain TX (Gbps)
# Ignored if the port is set to FPD3 mode
# FPD4RateDaisy0[2] sets DES2 Daisy Chain TX Port 0
# FPD4RateDaisy1[2] sets DES2 Daisy Chain TX Port 1
# Options: 3.375, 6.75, 10.8, 13.5, 12.528
FPD4RateDaisy0[2] = 10.8
FPD4RateDaisy1[2] = 10.8
# DES Daisy Chain FC SSCG Configuration
# SSCG options for the deserializer forward channel output
# Options:
# 0 = Disable SSCG on FPD forward channel daisy chain interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCg with Down Spread
DES_FC_SSCG[2] = 0
# FPD Daisy Chain FC SSCG FDEV %
# Ignored is DES_FC_SSCG = 0
# Sets the SSCG frequency deviation percentage for daisy chain forward channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_FC_SSCG_FDEV[2] = 0.25
# DES Daisy Chain SSCG FMOD kHz
# Ignored is DES_FC_SSCG = 0
# Set the SSCG modulation frequency for daisy chain forward channel interface SSCG
# Options: 30-33 (kHz)
DES_FC_SSCG_FMOD[2] = 33
# FPD BC SSCG Configuration
# SSCG options for the deserializer back channel output
# Options:
# 0 = Disable SSCG on FPD back channel interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_BC_SSCG[2] = 0
# FPD BC SSCG FDEV %
# Ignored is DES_BC_SSCG = 0
# Sets the SSCG frequency deviation percentage for FPD back channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_BC_SSCG_FDEV[2] = 0.25
# FPD SSCG FMOD kHz
# Ignored is DES_BC_SSCG = 0
# Set the SSCG modulation frequency for FPD back channel interface SSCG
# Options: 30-33 (kHz)
DES_BC_SSCG_FMOD[2] = 33
# Display SSCG Configuration
# SSCG options for the deserializer display output (OLDI or DP/eDP Interface)
# This is independent of the FPD-Link SSCG
# Options:
# 0 = Disable SSCG on display interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_Display_SSCG[2] = 0
# Display SSCG FDEV %
# Ignored is DES_Display_SSCG = 0
# Sets the SSCG frequency deviation percentage for display interface SSCG
# Options: 0-6 (%) for 988 in Center Spread Mode (+/-3%)
# Options: 0-3 (%) for 988 in Down Spread Mode
# Options: 0-0.5 (%) for 984 (Down Spread Only)
DES_Display_SSCG_FDEV[2] = 1
# Display SSCG FMOD kHz
# Ignored is DES_Display_SSCG = 0
# Set the SSCG modulation frequency for display interface SSCG
# Options: 10-100 (kHz) for 988
# Options: 30-33 (kHz) for 984
DES_Display_SSCG_FMOD[2] = 50
"""
DES2 984 Configs - Ignored if using 988
"""
#Select DP ports to be enabled
# Enabled = 1, Disabled = 0
DP0_ON[2] = 1
DP1_ON[2] = 0
#Select video source for DP output
#Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
DP_Output_0_Source[2] = 2
DP_Output_1_Source[2] = 2
# Select DP output lane rate and number of lanes
# Options (in Gbps):
# 1.62
# 2.7
# 5.4
# 8.1
DP_Rate[2] = 2.7
DP_Lane_Num[2] = 4
"""
DES2 988 Configs - Ignored if using 984
"""
# Select OLDI or RGB mode
# Options:
# 1 = RGB Mode Enabled
# 0 = OLDI Mode
RGBMode[2] = 0
# Select OLDI port configuration (Ignored for RGB mode)
# Options:
# 0 = Single OLDI port 0
# 1 = Single OLDI port 1
# 2 = Dual OLDI
# 3 = Dual OLDI Swap
OLDIEnabled[2] = 0
# Select MAPSEL Setting for port 0 and port 1 (Ignored for RGB mode)
# 0 = MAPSEL = L (LSB on D3/D4)
# 1 = MAPSEL = H (MSB on D3/D4)
MAPSEL0[2] = 1
MAPSEL1[2] = 1
# Set OLDI Bits Per Pixel for port 0 and 1 (Ignored in RGB mode)
# Options: 18, 24, 30
OLDIBpp0[2] = 18
OLDIBpp1[2] = 18
# Set RGB mode Bits Per Pixel (Ignored in OLDI mode)
RGBBpp[2] = 24
# Select video source for OLDI/RGB output
# Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# For Dual OLDI, use same stream for both ports
# OLDI_Port1_Source is ignored for single OLDI port 0 or RGB mode
# OLDI_RGB_Port0_Source is ignored for single OLDI port 1 mode
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
OLDI_RGB_Port0_Source[2] = 2
OLDI_Port1_Source[2] = 2
"""
#####################################
DES3 (Fourth Deserialzier) Configurations
#####################################
"""
# Des_Device
# Only used for FPD IV deserializer configurations - ignore if using FPD III deserializer
# Options 984, 988, HH984_CS1.0
Des_Device[3] = "984"
# FPD BC SSCG Configuration
# SSCG options for the deserializer back channel output
# Options:
# 0 = Disable SSCG on FPD back channel interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_BC_SSCG[3] = 0
# FPD BC SSCG FDEV %
# Ignored is DES_BC_SSCG = 0
# Sets the SSCG frequency deviation percentage for FPD back channel interface SSCG
# Note: Combined FPD FC and BC FDEV should not exceed 0.5% for center spread or 0.25% for down spread
# Options: 0-0.5 (%) in Center Spread Mode
# Options: 0-0.25 (%) in Down Spread Mode
DES_BC_SSCG_FDEV[3] = 0.25
# FPD SSCG FMOD kHz
# Ignored is DES_BC_SSCG = 0
# Set the SSCG modulation frequency for FPD back channel interface SSCG
# Options: 30-33 (kHz)
DES_BC_SSCG_FMOD[3] = 33
# Display SSCG Configuration
# SSCG options for the deserializer display output (OLDI or DP/eDP Interface)
# This is independent of the FPD-Link SSCG
# Options:
# 0 = Disable SSCG on display interface
# 1 = Enable SSCG with Center Spread
# 2 = Enable SSCG with Down Spread
DES_Display_SSCG[3] = 0
# Display SSCG FDEV %
# Ignored is DES_Display_SSCG = 0
# Sets the SSCG frequency deviation percentage for display interface SSCG
# Options: 0-6 (%) for 988 in Center Spread Mode (+/-3%)
# Options: 0-3 (%) for 988 in Down Spread Mode
# Options: 0-0.5 (%) for 984 (Down Spread Only)
DES_Display_SSCG_FDEV[3] = 0
# Display SSCG FMOD kHz
# Ignored is DES_Display_SSCG = 0
# Set the SSCG modulation frequency for display interface SSCG
# Options: 10-100 (kHz) for 988
# Options: 30-33 (kHz) for 984
DES_Display_SSCG_FMOD[3] = 50
"""
DES3 984 Configs - Ignored if using 988
"""
#Select DP ports to be enabled
# Enabled = 1, Disabled = 0
DP0_ON[3] = 1
DP1_ON[3] = 0
#Select video source for DP output
#Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
DP_Output_0_Source[3] = 3
DP_Output_1_Source[3] = 3
# Select DP output lane rate and number of lanes
# Options (in Gbps):
# 1.62
# 2.7
# 5.4
# 8.1
DP_Rate[3] = 2.7
DP_Lane_Num[3] = 4
"""
DES3 988 Configs - Ignored if using 984
"""
# Select OLDI or RGB mode
# Options:
# 1 = RGB Mode Enabled
# 0 = OLDI Mode
RGBMode[3] = 0
# Select OLDI port configuration (Ignored for RGB mode)
# Options:
# 0 = Single OLDI port 0
# 1 = Single OLDI port 1
# 2 = Dual OLDI
# 3 = Dual OLDI Swap
OLDIEnabled[3] = 2
# Select MAPSEL Setting for port 0 and port 1 (Ignored for RGB mode)
# 0 = MAPSEL = L (LSB on D3/D4)
# 1 = MAPSEL = H (MSB on D3/D4)
MAPSEL0[3] = 1
MAPSEL1[3] = 1
# Set OLDI Bits Per Pixel for port 0 and 1 (Ignored in RGB mode)
# Options: 18, 24, 30
OLDIBpp0[3] = 24
OLDIBpp1[3] = 24
# Set RGB mode Bits Per Pixel (Ignored in OLDI mode)
RGBBpp[3] = 24
# Select video source for OLDI/RGB output
# Ser VP0 is mapped to Stream 0, Ser VP1 is mapped to Stream 1, and etc.
# For Dual OLDI, use same stream for both ports
# OLDI_Port1_Source is ignored for single OLDI port 0 or RGB mode
# OLDI_RGB_Port0_Source is ignored for single OLDI port 1 mode
# 0 = Stream 0
# 1 = Stream 1
# 2 = Stream 2
# 3 = Stream 3
OLDI_RGB_Port0_Source[3] = 3
OLDI_Port1_Source[3] = 3
您好,现在UB983可以看到时序了,但屏幕仍未出图,怀疑是983到984的链路有问题,该怎么分析呢
----------------------------------
Lock / Link Status
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
Ser Reg 0xC = 0x53 , Des Reg 0x53 = 0xa4 , Des Reg 0x54 = 0xc5 , Des Reg 0x4E = 0x0
----------------------------------
VP Status
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 2 , VP_INTERRUPTS: 9
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 2 , VP_INTERRUPTS: 9
VP_STATUS: 2 , VP_INTERRUPTS: 9
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 3 , VP_INTERRUPTS: 9
VP_STATUS: 2 , VP_INTERRUPTS: 9
----------------------------------
DPRX Status
540 Rate
2 Lanes
0x377
0x0
0x14
0x0
Video source is set to SST mode
----------------------------------
H Res
2560
H POL
0
H SYNC WIDTH
60
H BACK PORCH
60
H TOTAL
2768
V Res
1600
V POL
0
V SYNC WIDTH
2
V BACK PORCH
18
HV TOTAL
1652
MSA_MISC0
33
MSA_MISC1
64
MSA_MVID
28260
MSA_NVID
55621
MSA_VBID
16
SYMBOL ERRORs - Lane 0
0x80000000L
SYMBOL ERRORs - Lane 1
0xc000000
SYMBOL ERRORs - Lane 2
0x0
SYMBOL ERRORs - Lane 3
0x0
----------------------------------
Des FIFO = 0x0
----------------------------------
DTG Port 0 Timing:
Htotal = 0
Vtotal = 0
Hactive = 61503
Vactive = 0
Hstart = 0
Hsync = 0
Vsync = 0
Vback = 0
Vfront = 0
----------------------------------
Print Des MSAs
('Port', 1, ': DPTX VIDEO RESOLUTION:')
('Port', 1, ': htotal (0x180) = 2768')
('Port', 1, ': vtotal (0x184) = 0')
('Port', 1, ': hres (0x18C) = 0')
('Port', 1, ': vres (0x190) = 0')
('Port', 1, ': hstart (0x19C) = 0')
('Port', 1, ': vstart (0x1A0) = 0')
('Port', 1, ': hswidth (0x18C) = 0')
('Port', 1, ': vswidth (0x18C) = 0')
-------------------------
Ux983_APB_dump
0x0 0x1
0x4 0x64
0x8 0x0
0xc 0x0
0x10 0x0
0x14 0x0
0x18 0x14
0x1c 0x14
0x20 0x0
0x24 0x0
0x28 0x2f
0x2c 0x0
0x30 0x0
0x34 0x0
0x38 0x1
0x3c 0x0
0x40 0x0
0x44 0x70
0x48 0x0
0x4c 0x0
0x50 0x0
0x54 0x0
0x58 0x0
0x5c 0x0
0x60 0x0
0x64 0x0
0x68 0x0
0x6c 0x0
0x70 0x2
0x74 0x14
0x78 0x0
0x7c 0x0
0x80 0x1
0x84 0x0
0x88 0x0
0x8c 0x0
0x90 0x0
0x94 0x0
0x98 0x0
0x9c 0x0
0xa0 0x0
0xa4 0x0
0xa8 0x5
0xac 0x0
0xb0 0x0
0xb4 0x0
0xb8 0x0
0xbc 0x0
0xc0 0x0
0xc4 0x0
0xc8 0x0
0xcc 0x0
0xd0 0x0
0xd4 0x0
0xd8 0x1f02
0xdc 0x0
0xe0 0x0
0xe4 0x0
0xe8 0x0
0xec 0x2
0xf0 0x0
0xf4 0x0
0xf8 0x123404
0xfc 0xb0507
0x100 0x0
0x104 0x0
0x108 0x0
0x10c 0x0
0x110 0x0
0x114 0x2
0x118 0x0
0x11c 0x0
0x120 0x0
0x124 0x0
0x128 0x0
0x12c 0x0
0x130 0x0
0x134 0x0
0x138 0x0
0x13c 0x0
0x140 0x0
0x144 0x0
0x148 0x0
0x14c 0x0
0x150 0x0
0x154 0x0
0x158 0x0
0x15c 0x0
0x160 0x0
0x164 0x0
0x168 0x0
0x16c 0x0
0x170 0x0
0x174 0x0
0x178 0x0
0x17c 0x0
0x180 0xfffffffeL
0x184 0x0
0x188 0x0
0x18c 0x310183
0x190 0x59
0x194 0x0
0x198 0x79
0x19c 0x0
0x1a0 0x7f
0x1a4 0x0
0x1a8 0x7f
0x1ac 0x0
0x1b0 0x0
0x1b4 0x0
0x1b8 0x0
0x1bc 0x0
0x1c0 0x0
0x1c4 0x0
0x1c8 0x0
0x1cc 0x0
0x1d0 0x0
0x1d4 0x0
0x1d8 0x0
0x1dc 0x0
0x1e0 0x0
0x1e4 0x0
0x1e8 0x0
0x1ec 0x0
0x1f0 0x0
0x1f4 0x0
0x1f8 0x0
0x1fc 0x0
0x200 0x0
0x204 0x0
0x208 0xf03f0
0x20c 0x0
0x210 0x0
0x214 0x2
0x218 0x0
0x21c 0x0
0x220 0x0
0x224 0x0
0x400 0x14
0x404 0x2
0x408 0x1
0x40c 0x0
0x410 0x0
0x414 0x0
0x418 0x0
0x41c 0x0
0x420 0x0
0x424 0x0
0x428 0x0
0x42c 0x0
0x430 0x0
0x434 0x1
0x438 0x2
0x43c 0x377
0x440 0x0
0x444 0x0
0x448 0x0
0x44c 0x0
0x450 0x0
0x454 0x1010000
0x458 0x0
0x45c 0x0
0x460 0x0
0x464 0x0
0x468 0x0
0x46c 0x0
0x470 0x0
0x474 0x0
0x478 0x0
0x47c 0x0
0x480 0x0
0x484 0x3f3f
0x488 0x0
0x48c 0xc00
0x490 0x80000000L
0x494 0x80000000L
0x498 0x0
0x49c 0x0
0x4a0 0x0
0x4a4 0x0
0x4a8 0x0
0x4ac 0x0
0x4b0 0x0
0x4b4 0x0
0x4b8 0x0
0x4bc 0x0
0x4c0 0x0
0x4c4 0x0
0x4c8 0x0
0x4cc 0x0
0x4d0 0x0
0x4d4 0x0
0x4d8 0x0
0x4dc 0x0
0x4e0 0x0
0x4e4 0x0
0x4e8 0x0
0x4ec 0x0
0x4f0 0x0
0x4f4 0x0
0x4f8 0x0
0x4fc 0x0
0x500 0xa00
0x504 0x0
0x508 0x3c
0x50c 0x78
0x510 0xad0
0x514 0x640
0x518 0x0
0x51c 0x2
0x520 0x14
0x524 0x674
0x528 0x21
0x52c 0x40
0x530 0x6e64
0x534 0xd945
0x538 0x10
0x53c 0x0
0x700 0x0
0x704 0x0
0x708 0x0
0x70c 0x0
0x710 0x0
0x714 0x0
0x718 0x0
0x71c 0x0
0x720 0x0
0x800 0x0
0x804 0x0
0x808 0x0
0x80c 0x0
0x810 0x0
0x814 0x270
0x818 0x0
0x81c 0x2
0x820 0x90
0x824 0x270
0x828 0x0
0x82c 0x0
0x830 0x0
0x834 0x0
0x838 0x0
0x83c 0x0
0x840 0x0
0x844 0x0
0x848 0x0
0x84c 0x0
0x850 0x0
0x854 0x0
0x858 0x0
0x85c 0x0
0x860 0x0
0x864 0x0
0x868 0x0
0x86c 0x0
0x870 0x0
0x874 0x0
0x878 0x0
0x87c 0x0
0x880 0x0
0x884 0x0
0x888 0x0
0x88c 0x0
0x890 0x0
0x894 0x0
0x898 0x0
0x89c 0x0
0x8a0 0x0
0x8a4 0x0
0x8a8 0x0
0x8ac 0x0
0x8b0 0x0
0x8b4 0x0
0x8b8 0x0
0x8bc 0x0
0x8c0 0x0
0x8c4 0x0
0x8c8 0x0
0x8cc 0x0
0x8d0 0x0
0x8d4 0x0
0x8d8 0x0
0x8dc 0x0
0x8e0 0x0
0x8e4 0x0
0x8e8 0x0
0x8ec 0x0
0x8f0 0x0
0x8f4 0x0
0x8f8 0x0
0x8fc 0x0
0x900 0x0
0x904 0x0
0x908 0xc
0x90c 0x0
0x910 0x0
0x914 0x0
0x918 0x0
0x91c 0xc0000
0x920 0x0
0x924 0x0
0x928 0x0
0x92c 0x0
0x930 0x0
0x934 0x0
0xa00 0x1
0xa04 0x4
0xa08 0x0
0xa0c 0x0
0xa10 0x0
0xa14 0x1
0xa18 0x1
0xa1c 0x8
0xa20 0xf
0xa24 0x1ff003f
0xa28 0x20
0xa2c 0x0
0xa30 0x78
0xa34 0x0
0xa38 0x0
0xa3c 0x0
0xa40 0x0
0xa44 0xc
0xa48 0x0
0xa4c 0x0
0xa50 0x0
0xa54 0x0
0xa58 0x0
0xa5c 0xc000000
0xa60 0x0
0xa64 0x0
0xa68 0x0
0xa6c 0x0
0xa70 0x0
0xa74 0x0
0xa78 0x0
0xa7c 0x0
0xa80 0x1
0xa84 0x0
0xa88 0x0
0xa8c 0x18
0xa90 0x4
0xa94 0x0
0xa98 0x0
0xa9c 0x76543210
0xaa0 0x0
0xaa4 0x0
0xaa8 0x0
0xaac 0x0
0xab0 0x0
0xab4 0x1
0xab8 0x0
0xabc 0x0
0xac0 0x0
0xac4 0x0
0xac8 0x0
0xacc 0x0
0xad0 0x0
0xad4 0x0
0xad8 0x0
0xadc 0x0
0xae0 0x0
0xae4 0x0
0xae8 0x2
0xaec 0x0
0xaf0 0x0
0xaf4 0x0
0xaf8 0x0
0xafc 0xc
0xb00 0x0
0xb04 0x4
0xb08 0x0
0xb0c 0x0
0xb10 0x0
0xb14 0x0
0xb18 0x0
0xb1c 0x8
0xb20 0xf
0xb24 0x1ff003f
0xb28 0xf000f
0xb2c 0x0
0xb30 0x78
0xb34 0x0
0xb38 0x0
0xb3c 0x0
0xb40 0x0
0xb44 0x0
0xb48 0x0
0xb4c 0x0
0xb50 0x0
0xb54 0x0
0xb58 0x0
0xb5c 0x0
0xb60 0xc
0xb64 0x0
0xb68 0x0
0xb6c 0x0
0xb70 0x0
0xb74 0x0
0xb78 0x0
0xb7c 0x0
0xb80 0x0
0xb84 0x1
0xb88 0x0
0xb8c 0x0
0xb90 0x0
0xb94 0x0
0xb98 0x0
0xb9c 0x0
0xba0 0x0
0xba4 0x0
0xba8 0x0
0xbac 0x0
0xbb0 0x0
0xbb4 0x0
0xbb8 0x0
0xbbc 0x0
0xbc0 0x0
0xbc4 0x0
0xbc8 0x0
0xbcc 0x0
0xbd0 0x0
0xbd4 0x0
0xbd8 0x0
0xbdc 0x0
0xbe0 0x0