📄 dp_hardware_marathon.c
字号:
2, /* DP_PIXEL_COLOUR_FORMAT_12_BIT_RGB_444_4_BIT_ALPHA */
2, /* DP_PIXEL_COLOUR_FORMAT_15_BIT_RGB_555_1_BIT_ALPHA */
2, /* DP_PIXEL_COLOUR_FORMAT_24_BIT_RGB_888 */
3, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_RGB_565 */
4, /* DP_PIXEL_COLOUR_FORMAT_24_BIT_RGB_888_8_BIT_ALPHA */
1, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_420_PLANAR */
2, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_UY0VY1 */
2, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_VY0UY1 */
2, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_Y0UY1V */
2 /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_Y0VY1U */
};
const DP_UINT_8 DP_aui8ColourFormatModeVals [ DP_PIXEL_COLOUR_FORMAT_NUMBER_OF_MODES ] =
{
0x00, /* DP_PIXEL_COLOUR_FORMAT_8_BIT_INDEXED */
0x01, /* DP_PIXEL_COLOUR_FORMAT_4_BIT_INDEXED_4_BIT_ALPHA */
0x02, /* DP_PIXEL_COLOUR_FORMAT_8_BIT_INDEXED_8_BIT_ALPHA */
0x03, /* DP_PIXEL_COLOUR_FORMAT_8_BIT_RGB_332 */
0x04, /* DP_PIXEL_COLOUR_FORMAT_12_BIT_RGB_444_4_BIT_ALPHA */
0x05, /* DP_PIXEL_COLOUR_FORMAT_15_BIT_RGB_555_1_BIT_ALPHA */
0x06, /* DP_PIXEL_COLOUR_FORMAT_24_BIT_RGB_888 */
0x07, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_RGB_565 */
0x08, /* DP_PIXEL_COLOUR_FORMAT_24_BIT_RGB_888_8_BIT_ALPHA */
0x09, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_420_PLANAR */
0x0C, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_UY0VY1 */
0x0D, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_VY0UY1 */
0x0E, /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_Y0UY1V */
0x0F /* DP_PIXEL_COLOUR_FORMAT_16_BIT_YUV_422_Y0VY1U */
};
const DP_UINT_8 DP_aui8AlphaBlendModeVals [ DP_ALPHA_BLEND_MODE_NUMBER_OF_MODES ] =
{
0x00,
0x02,
0x03,
0x01
};
/* This table lists the absolute references to look up tables which are used when writing to */
/* the hardware. */
const DP_INT_8 DP_auiPaletteLUTReferences [ DP_NO_OF_STREAMS ] =
{
0,
-1,
};
const DP_UINT_8 DP_aui8NumberOfScalerTapVals [ 5 ] =
{
0x00, /* No taps - invalid */
0x00,
0x01,
0x00, /* three taps - invalid */
0x03
};
const DP_UINT_8 DP_aui8MemoryRefreshPeriodsVals [ 4 ] =
{
0x00,
0x01,
0x02,
0x03
};
/* LCD screen used in testing */
DP_InitData DP_ThisDisplayType;
DP_VOID DP_SetUpCustomDisplayTypes ( DP_DisplayTypes eDisplayType )
{
switch ( eDisplayType )
{
case DP_DISPLAY_TYPE_LCD:
DP_ThisDisplayType.bCRCControl = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bBlankingPolarity = DP_TRUE;
DP_ThisDisplayType.bBlankSignalDisable = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bVerticalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bHorizontalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bInterlaceOn = DP_FALSE;
DP_ThisDisplayType.bFieldPolarity = DP_FALSE;
DP_ThisDisplayType.eMemoryRefreshPeriod = DP_MEMORY_REFRESH_V_BLANK_ONLY;
DP_ThisDisplayType.ui8MemoryBurstLength = 0x08;
DP_ThisDisplayType.bVerticalScalerUnderrunControl = DP_TRUE;
DP_ThisDisplayType.sTimingSettings.ui16HBPS = 0x012;
DP_ThisDisplayType.sTimingSettings.ui16HT = 0x190;
DP_ThisDisplayType.sTimingSettings.ui16HAS = 0x034;
DP_ThisDisplayType.sTimingSettings.ui16HLBS = 0x034;
DP_ThisDisplayType.sTimingSettings.ui16HFPS = 0x174;
DP_ThisDisplayType.sTimingSettings.ui16HRBS = 0x174;
DP_ThisDisplayType.sTimingSettings.ui16VBPS = 0x002;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x106;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x007;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x007;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x0F7;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x0F7;
break;
case DP_DISPLAY_TYPE_TV_PAL:
DP_ThisDisplayType.bCRCControl = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncSlaved = DP_TRUE;
DP_ThisDisplayType.bHorizontalSyncSlaved = DP_TRUE;
DP_ThisDisplayType.bBlankingPolarity = DP_FALSE;
DP_ThisDisplayType.bBlankSignalDisable = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncPolarity = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncPolarity = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bInterlaceOn = DP_TRUE;
DP_ThisDisplayType.bFieldPolarity = DP_FALSE;
DP_ThisDisplayType.eMemoryRefreshPeriod = DP_MEMORY_REFRESH_V_BLANK_ONLY;
DP_ThisDisplayType.ui8MemoryBurstLength = 0x08;
DP_ThisDisplayType.bVerticalScalerUnderrunControl = DP_TRUE;
DP_ThisDisplayType.sTimingSettings.ui16HBPS = 0x3f;
DP_ThisDisplayType.sTimingSettings.ui16HT = 0x360;
DP_ThisDisplayType.sTimingSettings.ui16HAS = 0x85;
DP_ThisDisplayType.sTimingSettings.ui16HLBS = 0x85;
DP_ThisDisplayType.sTimingSettings.ui16HFPS = 0x355;
DP_ThisDisplayType.sTimingSettings.ui16HRBS = 0x355;
DP_ThisDisplayType.sTimingSettings.ui16VBPS = 3;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x138;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x0C;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x0C;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x12C;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x12C;
/* DP_ThisDisplayType.sTimingSettings.ui16VBPS = 6;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x271;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x259;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x259;*/
break;
case DP_DISPLAY_TYPE_TV_NTSC:
DP_ThisDisplayType.bCRCControl = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bBlankingPolarity = DP_TRUE;
DP_ThisDisplayType.bBlankSignalDisable = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bVerticalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bHorizontalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bInterlaceOn = DP_FALSE;
DP_ThisDisplayType.bFieldPolarity = DP_FALSE;
DP_ThisDisplayType.eMemoryRefreshPeriod = DP_MEMORY_REFRESH_V_BLANK_ONLY;
DP_ThisDisplayType.ui8MemoryBurstLength = 0x08;
DP_ThisDisplayType.bVerticalScalerUnderrunControl = DP_TRUE;
DP_ThisDisplayType.sTimingSettings.ui16HBPS = 0x3f;
DP_ThisDisplayType.sTimingSettings.ui16HT = 0x35a;
DP_ThisDisplayType.sTimingSettings.ui16HAS = 0x7f;
DP_ThisDisplayType.sTimingSettings.ui16HLBS = 0x7f;
DP_ThisDisplayType.sTimingSettings.ui16HFPS = 0x345;
DP_ThisDisplayType.sTimingSettings.ui16HRBS = 0x345;
DP_ThisDisplayType.sTimingSettings.ui16VBPS = 6;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x20d;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x1f9;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x1f9;
break;
case DP_DISPLAY_TYPE_TV_PALM:
DP_ThisDisplayType.bCRCControl = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bBlankingPolarity = DP_TRUE;
DP_ThisDisplayType.bBlankSignalDisable = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bVerticalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bHorizontalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bInterlaceOn = DP_FALSE;
DP_ThisDisplayType.bFieldPolarity = DP_FALSE;
DP_ThisDisplayType.eMemoryRefreshPeriod = DP_MEMORY_REFRESH_V_BLANK_ONLY;
DP_ThisDisplayType.ui8MemoryBurstLength = 0x08;
DP_ThisDisplayType.bVerticalScalerUnderrunControl = DP_TRUE;
DP_ThisDisplayType.sTimingSettings.ui16HBPS = 0x3f;
DP_ThisDisplayType.sTimingSettings.ui16HT = 0x35a;
DP_ThisDisplayType.sTimingSettings.ui16HAS = 0x7f;
DP_ThisDisplayType.sTimingSettings.ui16HLBS = 0x7f;
DP_ThisDisplayType.sTimingSettings.ui16HFPS = 0x345;
DP_ThisDisplayType.sTimingSettings.ui16HRBS = 0x345;
DP_ThisDisplayType.sTimingSettings.ui16VBPS = 6;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x271;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x259;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x259;
break;
case DP_DISPLAY_TYPE_TV_PALN:
DP_ThisDisplayType.bCRCControl = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncSlaved = DP_FALSE;
DP_ThisDisplayType.bBlankingPolarity = DP_TRUE;
DP_ThisDisplayType.bBlankSignalDisable = DP_FALSE;
DP_ThisDisplayType.bVerticalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bVerticalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bHorizontalSyncPolarity = DP_TRUE;
DP_ThisDisplayType.bHorizontalSyncDisable = DP_FALSE;
DP_ThisDisplayType.bInterlaceOn = DP_FALSE;
DP_ThisDisplayType.bFieldPolarity = DP_FALSE;
DP_ThisDisplayType.eMemoryRefreshPeriod = DP_MEMORY_REFRESH_V_BLANK_ONLY;
DP_ThisDisplayType.ui8MemoryBurstLength = 0x08;
DP_ThisDisplayType.bVerticalScalerUnderrunControl = DP_TRUE;
DP_ThisDisplayType.sTimingSettings.ui16HBPS = 0x3f;
DP_ThisDisplayType.sTimingSettings.ui16HT = 0x360;
DP_ThisDisplayType.sTimingSettings.ui16HAS = 0x7c;
DP_ThisDisplayType.sTimingSettings.ui16HLBS = 0x7c;
DP_ThisDisplayType.sTimingSettings.ui16HFPS = 0x34c;
DP_ThisDisplayType.sTimingSettings.ui16HRBS = 0x34c;
DP_ThisDisplayType.sTimingSettings.ui16VBPS = 6;
DP_ThisDisplayType.sTimingSettings.ui16VT = 0x271;
DP_ThisDisplayType.sTimingSettings.ui16VAS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VTBS = 0x19;
DP_ThisDisplayType.sTimingSettings.ui16VFPS = 0x259;
DP_ThisDisplayType.sTimingSettings.ui16VBBS = 0x259;
break;
}
}
/* This table specifies how source and destination heights should be modified when writing them to */
/* hardware, based on (in order) data type for the plane, whether the display is interlaced or not */
/* and whether the video scaler is currently being used by the plane. */
const DP_ScalerModifier DP_ScalerModifiersTable [ 2 ] [ DP_SOURCE_DATA_TYPE_UNKNOWN ] [ 2 ] [ 2 ] =
{
/* EXTERNAL INTERLACED FIELDS DISABLED */
{
/* DP_SOURCE_DATA_TYPE_PROGRESSIVE */
{
/* Non interlaced display */
{
/* Not scaling */
{
DP_FALSE,
1,
1,
0,
1
},
/* Scaling */
{
DP_FALSE,
1,
1,
0,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -