⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd_sw.h

📁 这个是MTK手机平台上面的LCD
💻 H
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*****************************************************************************
 *
 * Filename:
 * ---------
 *    lcd_sw.h
 *
 * Project:
 * --------
 *   Maui_Software
 *
 * Description:
 * ------------
 *   This file is intends for LCD driver.
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
#include "lcd_if.h"
 
#ifndef _LCD_SW_H
#define _LCD_SW_H

#if (defined(MT6205))
	#define LCD_DUMMYADDR   0x80170010
#elif ( (defined(MT6208)) || (defined(FPGA)) || (defined(MT6205B)) )
	#define LCD_DUMMYADDR   0x80170010
   	#ifdef ORDNANCE
   		#define LCD_CTRLAddr		(0x20000000)
   		#define LCD_DATAAddr		(0x2fffffff)
   	#else /*!ORDNANCE*/
   		#define LCD_CTRLAddr		(0x30000000)
   		#define LCD_DATAAddr		(0x3fffffff)
   	#endif   /*!ORDNANCE*/
#elif (defined(MT6218))
	#define LCD_DUMMYADDR   0x80170010
	#define LCD_CTRLAddr		0x28000000
	#define LCD_DATAAddr		0x2fffffff
#elif (defined(MT6218B) || defined(MT6219) || defined(MT6217) || defined(MT6226)|| defined(MT6226M))
	#define LCD_CMD_DMA_MODE
	#define LCD_DUMMYADDR   		0x90000000
#endif


	#ifdef __MIKI_SM264_TRULY_GG3342__     
		#define LCD_CTRLAddr				LCD_PARALLEL0_A0_LOW_ADDR
		#define LCD_DATAAddr				LCD_PARALLEL0_A0_HIGH_ADDR
		#define SET_LCD_PARALLEL_DATA_BUS_WIDTH         SET_LCD_PARALLEL_8BIT_DATA_BUS

		#define LCD_HCD667B89RBP_CTRL_ADDR		LCD_CTRLAddr
		#define LCD_HCD667B89RBP_DATA_ADDR		LCD_DATAAddr
		
		#define MAIN_LCD_CMD_ADDR			LCD_HCD667B89RBP_CTRL_ADDR
		#define MAIN_LCD_DATA_ADDR		        LCD_HCD667B89RBP_DATA_ADDR
		#define MAIN_LCD_OUTPUT_FORMAT	                LCM_8BIT_16_BPP_RGB565_1
		
		#define SUB_LCD_CMD_ADDR			LCD_HCD667B89RBP_CTRL_ADDR	
		#define SUB_LCD_DATA_ADDR			LCD_HCD667B89RBP_DATA_ADDR	
		#define SUB_LCD_OUTPUT_FORMAT	LCM_8BIT_16_BPP_RGB565_1

		#if (defined(MT6218B) || defined(MT6219) || defined(MT6217) || defined(MT6226)|| defined(MT6226M))
		
			#define LCD_SEND_DMA_CMD(n) \
			{\
				DISABLE_LCD_TRANSFER_COMPLETE_INT;\
				SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\
				ENABLE_LCD_ROI_CTRL_CMD_FIRST;\
				SET_LCD_ROI_WINDOW_SIZE(0,0);\
				START_LCD_TRANSFER;\
				while (LCD_IS_RUNNING) {};\
			}
			
			#ifdef LCD_CMD_DMA_MODE
				#define LCD_CtrlWrite_HCD667B89RBP(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_CMD, (_data & 0xFF00)>>8);\
					SET_LCD_CMD_PARAMETER(1, LCD_CMD, (_data & 0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}

				#define LCD_DataWrite_HCD667B89RBP(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_DATA, (_data & 0xFF00)>>8);\
					SET_LCD_CMD_PARAMETER(1, LCD_DATA, (_data & 0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}
				
			#else
				#define LCD_CtrlWrite_HCD667B89RBP(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_CTRL_ADDR = (_data & 0xFF00) >> 8;\
					Dummy_Delay();\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_CTRL_ADDR = _data & 0xFF;\
					Dummy_Delay();\
				}

				#define LCD_DataWrite_HCD667B89RBP(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_DATA_ADDR = (_data & 0xFF00) >> 8;\
					Dummy_Delay();\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_DATA_ADDR = _data  & 0xFF;\
					Dummy_Delay();\
				}
			#endif // LCD_CMD_DMA_MODE 
			
			#define LCD_RAMWrite_HCD667B89RBP(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_DATA_ADDR = (_data & 0xFF00) >> 8;\
					*(volatile kal_uint8 *) LCD_HCD667B89RBP_DATA_ADDR = _data  & 0xFF;\
				}
		
		#endif

	#endif     //  __MIKI_SM264_TRULY_GG3342__

	//========================================================
	//
	//   HITACH  64k Color LCD,  Chip: RENRSAS R61500 , 176x220 Parallel Interface
	//                          
	//========================================================
	#ifdef __SM02_MIKI_DRV_LCD_HITACHI_R61500__

		#define LCD_R61500_CTRL_ADDR		LCD_PARALLEL0_A0_LOW_ADDR
		#define LCD_R61500_DATA_ADDR		LCD_PARALLEL0_A0_HIGH_ADDR
		#define MAIN_LCD_CMD_ADDR			LCD_R61500_CTRL_ADDR
		#define MAIN_LCD_DATA_ADDR			LCD_R61500_DATA_ADDR			
		#define MAIN_LCD_OUTPUT_FORMAT		LCM_8BIT_16_BPP_RGB565_1
		#define SET_LCD_PARALLEL_DATA_BUS_WIDTH         SET_LCD_PARALLEL_8BIT_DATA_BUS
		
	#ifdef MCU_13M
		#define Dummy_Delay()
	#endif  
			   
	#ifdef MCU_26M
		#define Dummy_Delay()    \
		 {\
		        kal_uint16 _stat;\
		        _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		 }
	#endif  
			   
	#ifdef MCU_39M
	      #define Dummy_Delay()    \
	      {\
	         	kal_uint16 _stat;\
	         	_stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
	         	_stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
	      }
	#endif   
		  
	#ifdef MCU_52M
	      #define Dummy_Delay()    \
	      {\
		         kal_uint16 _stat;\
		         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
	      }
	#endif  
		#if (defined(MT6218B) || defined(MT6219) || defined(MT6217) || defined(MT6226)|| defined(MT6226M))
			
			#ifdef LCD_CMD_DMA_MODE
				#define LCD_SEND_DMA_CMD(n) \
				{\
					DISABLE_LCD_TRANSFER_COMPLETE_INT;\
					SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\
					ENABLE_LCD_ROI_CTRL_CMD_FIRST;\
					SET_LCD_ROI_WINDOW_SIZE(0, 0);\
					START_LCD_TRANSFER;\
					while (LCD_IS_RUNNING) {};\
				}

				#define LCD_CtrlWrite_R61500(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_CMD, (_data&0xFF00)>>8);\
					Dummy_Delay();\
					SET_LCD_CMD_PARAMETER(1, LCD_CMD, (_data&0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}

				#define LCD_DataWrite_R61500(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_DATA, (_data&0xFF00)>>8);\
					Dummy_Delay();\
					SET_LCD_CMD_PARAMETER(1, LCD_DATA, (_data&0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}
			#else
				
				#define LCD_CtrlWrite_R61500(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_R61500_CTRL_ADDR= (_data&0xFF00)>>8;\
					*(volatile kal_uint8 *) LCD_R61500_CTRL_ADDR= (_data&0xFF);\
					Dummy_Delay();\
				}

				#define LCD_DataWrite_R61500(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_R61500_DATA_ADDR = (_data&0xFF00)>>8;\
					*(volatile kal_uint8 *) LCD_R61500_DATA_ADDR = (_data&0xFF);\
					Dummy_Delay();\
				}
					
			#endif // LCD_CMD_DMA_MODE 
			
			#define Write_REG_R61500(_reg,_data)\
			{\
				LCD_CtrlWrite_R61500(_reg);\
				LCD_DataWrite_R61500(_data); \
			}

		#endif 
		#endif // #ifdef __SM02_MIKI_DRV_LCD_HITACHI_R61500__

	//========================================================
	//
	//   TRULY GG3800  64k Color LCD,  Driver IC:HX8309 , 176x220 Parallel Interface
	//                          
	//========================================================
	#ifdef __SM264_MIKI_DRV_LCD_TRULY_GG3800__

		#define LCD_HX8309_CTRL_ADDR		LCD_PARALLEL0_A0_LOW_ADDR
		#define LCD_HX8309_DATA_ADDR		LCD_PARALLEL0_A0_HIGH_ADDR
		#define MAIN_LCD_CMD_ADDR			LCD_HX8309_CTRL_ADDR
		#define MAIN_LCD_DATA_ADDR		LCD_HX8309_DATA_ADDR			
		#define MAIN_LCD_OUTPUT_FORMAT	LCM_8BIT_16_BPP_RGB565_1
		#define SET_LCD_PARALLEL_DATA_BUS_WIDTH         SET_LCD_PARALLEL_8BIT_DATA_BUS

		#ifdef MCU_13M
			#define Dummy_Delay()
		#endif  
			   
		#ifdef MCU_26M
			#define Dummy_Delay()    \
			 {\
			        kal_uint16 _stat;\
			        _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
			 }
		#endif  
			   
		#ifdef MCU_39M
		      #define Dummy_Delay()    \
		      {\
		         	kal_uint16 _stat;\
		         	_stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
	         		_stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		      }
		#endif   
		  
		#ifdef MCU_52M
		      #define Dummy_Delay()    \
		      {\
			         kal_uint16 _stat;\
			         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
			         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		         	_stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
			         _stat = *(volatile kal_uint16 *)LCD_DUMMYADDR;\
		      }
		#endif  
		
		#if (defined(MT6218B) || defined(MT6219) || defined(MT6217) || defined(MT6226)|| defined(MT6226M))
			
			#ifdef LCD_CMD_DMA_MODE
				#define LCD_SEND_DMA_CMD(n) \
				{\
					DISABLE_LCD_TRANSFER_COMPLETE_INT;\
					SET_LCD_ROI_CTRL_NUMBER_OF_CMD(n);\
					ENABLE_LCD_ROI_CTRL_CMD_FIRST;\
					SET_LCD_ROI_WINDOW_SIZE(0, 0);\
					START_LCD_TRANSFER;\
					while (LCD_IS_RUNNING) {};\
				}

				#define LCD_CtrlWrite_HX8309(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_CMD, (_data&0xFF00)>>8);\
					Dummy_Delay();\
					SET_LCD_CMD_PARAMETER(1, LCD_CMD, (_data&0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}

				#define LCD_DataWrite_HX8309(_data) \
				{\
					SET_LCD_CMD_PARAMETER(0, LCD_DATA, (_data&0xFF00)>>8);\
					Dummy_Delay();\
					SET_LCD_CMD_PARAMETER(1, LCD_DATA, (_data&0xFF));\
					LCD_SEND_DMA_CMD(2);\
				}
			#else
				
				#define LCD_CtrlWrite_HX8309(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_HX8309_CTRL_ADDR= (_data&0xFF00)>>8;\
					*(volatile kal_uint8 *) LCD_HX8309_CTRL_ADDR= (_data&0xFF);\
					Dummy_Delay();\
				}


				#define LCD_DataWrite_HX8309(_data)  \
				{\
					*(volatile kal_uint8 *) LCD_HX8309_DATA_ADDR = (_data&0xFF00)>>8;\
					*(volatile kal_uint8 *) LCD_HX8309_DATA_ADDR = (_data&0xFF);\
					Dummy_Delay();\
				}
					
			#endif // LCD_CMD_DMA_MODE 
			
			#define Write_REG_HX8309(_reg,_data)\
			{\
				LCD_CtrlWrite_HX8309(_reg);\
				LCD_DataWrite_HX8309(_data); \

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -