/*
================================================================================
* Texas Instruments OMAP(TM) Platform Software
* (c) Copyright Texas Instruments, Incorporated. All Rights Reserved.
*
* Use of this software is controlled by the terms and conditions found
* in the license agreement under which this software has been supplied.
*
================================================================================
*/
#include <windows.h>
#include <winuser.h>
#include <winuserm.h>
#include <bsp.h>
#include <oal.h>
#include <oalex.h>
#include <lcd.h>
#include <dsi.h>
#ifdef DEVICE_MODE
#include <initguid.h>
#include <gpio.h>
#endif
#ifdef BSP_OMAP4470
#include <twl6032.h>
#else
#include <twl6030.h>
#endif
//
// Defines
//
#ifdef TABLET_PLATFORM
#define PANEL_WIDTH 1280
#define PANEL_HEIGHT 800
#define LCD_PIXELCLOCK 65183
#else
#define PANEL_WIDTH 864
#define PANEL_HEIGHT 480
#define LCD_PIXELCLOCK 25000000 // Update the correct value
#endif
#if _WINCEOSVER>=700 && defined(DEVICE_MODE)
//#define DEFAULT_PIXELTYPE DISPC_PIXELFORMAT_ARGB32
#define DEFAULT_PIXELTYPE DISPC_PIXELFORMAT_RGB16
#else
#define DEFAULT_PIXELTYPE DISPC_PIXELFORMAT_RGB16
#endif
#define PANEL_RESETPIN 102 // GPIO Line
#define MIPI_DSI 0x1
#define MIPI_DPI 0x2
#define MIPI_DBI_B 0x3
#define MIPI_DBI_C 0x4
#define RGB_12_8 0x5
#define T_HSSI 0x6
#define REFCLK_32KHZ 0x1
#define REFCLK_19P2MHZ 0x2
#define DCS_SOFT_RESET 0x01
#define DCS_ENTER_SLEEP_MODE 0x10
#define DCS_EXIT_SLEEP_MODE 0x11
#define DCS_NORMAL_MODE_ON 0x13
#define DCS_SET_DISPLAY_ON 0x29
#define DCS_SET_DISPLAY_OFF 0x28
#define DCS_SET_PIXEL_FORMAT 0x3A
#define DCS_SET_DISPLAY_BUFFER_IO_CONTROL 0x82
#define DCS_SET_OUTPUT_PIXEL_CLK_FREQ 0x9E
#define DCS_SET_OUTPUT_VERTICAL_TIMING 0x8B
#define DCS_SET_OUTPUT_HORIZONTAL_TIMING 0x92
#define DCS_SET_SPECIAL_COMMAND_SET 0x9D
#define DCS_SET_ALL_PIXELS_OFF 0x22
#define DCS_SET_ALL_PIXELS_ON 0x23
#define DCS_SET_COLUMN_ADDRESS 0x2A
#define DCS_SET_PAGE_ADDRESS 0x2B
#define DCS_WRITE_EDISCO_REGISTER 0xFD
#define DCS_WRITE_INDEX_REGISTER 0xFB
#define DCS_WRITE_MEMORY_START 0x2C
#define DCS_WRITE_MEMORY_CONTINUE 0x3C
#define DCS_VSYNC_START 0x01
#define DCS_HSYNC_START 0x21
#define DCS_SET_TEAR_ON 0x35
#define DCS_SET_TEAR_OFF 0x34
#define DCS_SET_TE_VS_OUTPUT_TIMING 0x84
#define DCS_SET_ADDRESS_MODE 0x36
#define DCS_SET_GAMMA_CURVE 0x26
#define DCS_GET_ID1 0xDA
#define DCS_GET_ID2 0xDB
#define DCS_GET_ID3 0xDC
#define DCS_GET_DIAG_RESULT 0x0F
#define DCS_GET_PIXEL_FORMAT 0x0C
#define DCS_GET_SCAN_LINE 0x45
#define DCS_GET_DISPLAY_BUF_IO_CTRL 0x83
#define DCS_GET_OUTPUT_VERTICAL_FRONT_PORCH 0x8C
#define DCS_GET_OUTPUT_VERTICAL_SYNC_PULSE 0x8D
#define DCS_GET_OUTPUT_VERTICAL_BACK_PORCH 0x8E
#define DCS_GET_OUTPUT_VERTICAL_ACT_LINES_MSB 0x8F
#define DCS_GET_OUTPUT_VERTICAL_ACT_LINES_CSB 0x90
#define DCS_GET_OUTPUT_VERTICAL_ACT_LINES_LSB 0x91
#define DCS_GET_OUTPUT_HORIZONTAL_FRONT_PORCH 0x93
#define DCS_GET_OUTPUT_HORIZONTAL_SYNC_PULSE 0x94
#define DCS_GET_OUTPUT_HORIZONTAL_BACK_PORCH 0x95
#define DCS_GET_OUTPUT_HORIZONTAL_ACT_LINES_MSB 0x96
#define DCS_GET_OUTPUT_HORIZONTAL_ACT_LINES_CSB 0x97
#define DCS_GET_OUTPUT_HORIZONTAL_ACT_LINES_LSB 0x98
#define DCS_GET_OUTPUT_PCLK_FREQ 0x9F
#define DCS_READ_EDISCO_REGISTER 0xFC
#define DCS_READ_MEMORY_START 0x2E
#define DCS_READ_MEMORY_CONTINUE 0x3E
#define DCS_GET_POWER_MODE 0x0A
#define DCS_GET_ADDRESS_MODE 0x0B
#define DCS_GET_SIGNAL_MODE 0x0E
#ifdef BOOT_MODE
#define Delay(milliSeconds) OALStall(1000 * milliSeconds)
#define GetTicks() (0)
#define PRINTMSG(cond, exp) OALMSG(cond, exp)
#else
#define Delay(milliSeconds) StallExecution(1000 * milliSeconds) //Sleep(milliSeconds)
#define GetTicks() (GetTickCount())
#define PRINTMSG(cond, exp) RETAILMSG(cond, exp)
#endif
//
// Globals
//
UINT8 g_WriteCmdMode = DSI_LPS_MODE_TX;
UINT8 g_ReadCmdMode = DSI_LPS_MODE_TX;
UINT8 gDcsCmdBuffPtr[480+1];
BOOL g_bPanelInitialized = FALSE;
UINT8 g_CmdModeChnl = 0;
HANDLE g_hDisplay = 0;
DWORD g_dwPowerLevel;
BOOL g_bDisplayOn;
//
// Local Functions
//
BOOL SetPixelFormat( DWORD dwPixelFormat, LPVOID pDsiDisplay );
BOOL SetImageSize( DWORD dwImageWidth, DWORD dwImageHeight, LPVOID pDsiDisplay );
BOOL SetGammaCurve( LPVOID pDsiDisplay );
BOOL ResetPanel( LPVOID pDsiDisplay );
BOOL AllPixelsOff( LPVOID pDsiDisplay );
BOOL AllPixelsOn( LPVOID pDsiDisplay );
BOOL SetNormalMode( LPVOID pDsiDisplay );
VOID Panel_HWReset();
//----------------------------------------------------------------------------
// Func : Panel_GetParams
//
// Desc : Pass the panel specific params to DSI
//
VOID Panel_GetParams( DWORD *pPanelWidth, DWORD *pPanelHeight, DWORD *pPanelClock )
{
*pPanelWidth = PANEL_WIDTH;
*pPanelHeight = PANEL_HEIGHT;
*pPanelClock = LCD_PIXELCLOCK;
}
//----------------------------------------------------------------------------
//
// Panel_GetDPHYConfig
//
// Desc: Returns the DPHY configuration required on SDP4430 platform
//
void Panel_GetDPHYConfig( DPHYCONFIG *pIOConfig, DWORD dwNumOfDataLanes )
{
#ifndef TABLET_PLATFORM
// Configure the Lane position and polarity
pIOConfig->clkLane.pos = LANE_POS_1;
pIOConfig->clkLane.pol = LANE_POL_XP_YN;
pIOConfig->dataLane[0].pos = LANE_POS_2;
pIOConfig->dataLane[0].pol = LANE_POL_XP_YN;
pIOConfig->dataLane[1].pos = LANE_POS_3;
pIOConfig->dataLane[1].pol = LANE_POL_XP_YN;
pIOConfig->dataLane[2].pos = 0;
pIOConfig->dataLane[2].pol = 0;
pIOConfig->dataLane[3].pos = 0;
pIOConfig->dataLane[3].pol = 0;
pIOConfig->dwThsPrepare = 9;
pIOConfig->dwThsPrepareThsZero = 20;
pIOConfig->dwThsTrail = 6;
pIOConfig->dwThsExit = 15;;
pIOConfig->dwTlpxHalf = 3;
pIOConfig->dwTclkTrail = 6;
pIOConfig->dwTclkZero = 26;
pIOConfig->dwTclkPrepare = 7;
pIOConfig->dwDPhyTag0 = 2;
pIOConfig->dwDPhyTasure = 0;
pIOConfig->dwDPhyTarget = 2;
pIOConfig->dwDDRClkPre = 10;
pIOConfig->dwDDRClkPost = 9;
#else
// DPHY configuration for Blaze Tablet
pIOConfig->clkLane.pos = LANE_POS_1;
pIOConfig->clkLane.pol = LANE_POL_XP_YN;
pIOConfig->dataLane[0].pos = LANE_POS_2;
pIOConfig->dataLane[0].pol = LANE_POL_XP_YN;
pIOConfig->dataLane[1].pos = LANE_POS_3;
pIOConfig->dataLane[1].pol = LANE_POL_XP_YN;
pIOConfig->dataLane[2].pos = LANE_POS_4;
pIOConfig->dataLane[2].pol = LANE_POL_XP_YN;
pIOConfig->dataLane[3].pos = LANE_POS_5;
pIOConfig->dataLane[3].pol = LANE_POL_XP_YN;
pIOConfig->dwThsPrepare = 16;
pIOConfig->dwThsPrepareThsZero = 37;
pIOConfig->dwThsTrail = 17;
pIOConfig->dwThsExit = 29;
pIOConfig->dwTlpxHalf = 5;
pIOConfig->dwTclkTrail = 14;
pIOConfig->dwTclkZero = 52;
pIOConfig->dwTclkPrepare = 13;
pIOConfig->dwDPhyTag0 = 2;
pIOConfig->dwDPhyTasure = 0;
pIOConfig->dwDPhyTarget = 2;
pIOConfig->dwDDRClkPre = 27;
pIOConfig->dwDDRClkPost = 14;
#endif
}
//----------------------------------------------------------------------------
//
// Panel_UpdateVideoModeTimingParams
//
// Desc: Updates the video mode timing parameters passed from display driver
//
void Panel_UpdateVideoModeTimingParams(
VIDEOMODETIMINGPARAMS *pVMTimingConfig,
DWORD dwPixelFormat
)
{
#ifdef TABLET_PLATFORM
// Video Timing configuration for Blaze Tablet
// DSI_VM_TIMING1
pVMTimingConfig->dwVidModeHbp = 26;
pVMTimingConfig->dwVidModeHfp = 211;
pVMTimingConfig->dwVidModeHsa = 1;
lcd_driver_demo.zip_DEMO
版权申诉
59 浏览量
2022-09-14
21:51:46
上传
评论
收藏 6KB ZIP 举报
Kinonoyomeo
- 粉丝: 76
- 资源: 1万+
最新资源
- 水稻病害基于Yolov8算法优化目标检测识别与AI辅助决策python源码+模型+使用说明.zip
- 海尔618算价表_七海5.20_16.00xlsx(1)(2).xlsx
- WebCrawler.scr
- 【计算机专业毕业设计】大学生就业信息管理系统设计源码.zip
- YOLO 数据集:8种路面缺陷病害检测【包含划分好的数据集、类别class文件、数据可视化脚本】
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于YOLOv8的FPS TPS AI自动锁定源码+使用步骤说明.zip
- JAVA实现Modbus RTU或Modbus TCPIP案例.zip
- 基于yolov8+streamlit的火灾检测部署源码+模型.zip
- 测试aaaaaaabbbbb
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈