169 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			169 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								#ifndef _IT8951_H_
							 | 
						||
| 
								 | 
							
								#define _IT8951_H_
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include <bcm2835.h>
							 | 
						||
| 
								 | 
							
								#include <stdio.h>
							 | 
						||
| 
								 | 
							
								#include <stdint.h>
							 | 
						||
| 
								 | 
							
								#include <stdlib.h>
							 | 
						||
| 
								 | 
							
								#include <string.h>
							 | 
						||
| 
								 | 
							
								#include "miniGUI.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define CS 				8
							 | 
						||
| 
								 | 
							
								#define HRDY 	        24
							 | 
						||
| 
								 | 
							
								#define RESET 	        17
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//prototype of structure
							 | 
						||
| 
								 | 
							
								//structure prototype 1
							 | 
						||
| 
								 | 
							
								typedef struct IT8951LdImgInfo
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint16_t usEndianType; //little or Big Endian
							 | 
						||
| 
								 | 
							
								    uint16_t usPixelFormat; //bpp
							 | 
						||
| 
								 | 
							
								    uint16_t usRotate; //Rotate mode
							 | 
						||
| 
								 | 
							
								    uint32_t ulStartFBAddr; //Start address of source Frame buffer
							 | 
						||
| 
								 | 
							
								    uint32_t ulImgBufBaseAddr;//Base address of target image buffer
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								}IT8951LdImgInfo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//structure prototype 2
							 | 
						||
| 
								 | 
							
								typedef struct IT8951AreaImgInfo
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint16_t usX;
							 | 
						||
| 
								 | 
							
								    uint16_t usY;
							 | 
						||
| 
								 | 
							
								    uint16_t usWidth;
							 | 
						||
| 
								 | 
							
								    uint16_t usHeight;
							 | 
						||
| 
								 | 
							
								}IT8951AreaImgInfo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								typedef struct
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint16_t usPanelW;
							 | 
						||
| 
								 | 
							
								    uint16_t usPanelH;
							 | 
						||
| 
								 | 
							
								    uint16_t usImgBufAddrL;
							 | 
						||
| 
								 | 
							
								    uint16_t usImgBufAddrH;
							 | 
						||
| 
								 | 
							
								    uint16_t usFWVersion[8]; 	//16 Bytes String
							 | 
						||
| 
								 | 
							
								    uint16_t usLUTVersion[8]; 	//16 Bytes String
							 | 
						||
| 
								 | 
							
								}IT8951DevInfo;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Built in I80 Command Code
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_SYS_RUN      0x0001
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_STANDBY      0x0002
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_SLEEP        0x0003
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_REG_RD       0x0010
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_REG_WR       0x0011
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_MEM_BST_RD_T 0x0012
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_MEM_BST_RD_S 0x0013
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_MEM_BST_WR   0x0014
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_MEM_BST_END  0x0015
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_LD_IMG       0x0020
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_LD_IMG_AREA  0x0021
							 | 
						||
| 
								 | 
							
								#define IT8951_TCON_LD_IMG_END   0x0022
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//I80 User defined command code
							 | 
						||
| 
								 | 
							
								#define USDEF_I80_CMD_DPY_AREA     0x0034
							 | 
						||
| 
								 | 
							
								#define USDEF_I80_CMD_GET_DEV_INFO 0x0302
							 | 
						||
| 
								 | 
							
								#define USDEF_I80_CMD_DPY_BUF_AREA 0x0037
							 | 
						||
| 
								 | 
							
								//Panel
							 | 
						||
| 
								 | 
							
								#define IT8951_PANEL_WIDTH   1024 //it Get Device information
							 | 
						||
| 
								 | 
							
								#define IT8951_PANEL_HEIGHT   758
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Rotate mode
							 | 
						||
| 
								 | 
							
								#define IT8951_ROTATE_0     0
							 | 
						||
| 
								 | 
							
								#define IT8951_ROTATE_90    1
							 | 
						||
| 
								 | 
							
								#define IT8951_ROTATE_180   2
							 | 
						||
| 
								 | 
							
								#define IT8951_ROTATE_270   3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Pixel mode , BPP - Bit per Pixel
							 | 
						||
| 
								 | 
							
								#define IT8951_2BPP   0
							 | 
						||
| 
								 | 
							
								#define IT8951_3BPP   1
							 | 
						||
| 
								 | 
							
								#define IT8951_4BPP   2
							 | 
						||
| 
								 | 
							
								#define IT8951_8BPP   3
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Waveform Mode
							 | 
						||
| 
								 | 
							
								#define IT8951_MODE_0   0
							 | 
						||
| 
								 | 
							
								#define IT8951_MODE_1   1
							 | 
						||
| 
								 | 
							
								#define IT8951_MODE_2   2
							 | 
						||
| 
								 | 
							
								#define IT8951_MODE_3   3
							 | 
						||
| 
								 | 
							
								#define IT8951_MODE_4   4
							 | 
						||
| 
								 | 
							
								//Endian Type
							 | 
						||
| 
								 | 
							
								#define IT8951_LDIMG_L_ENDIAN   0
							 | 
						||
| 
								 | 
							
								#define IT8951_LDIMG_B_ENDIAN   1
							 | 
						||
| 
								 | 
							
								//Auto LUT
							 | 
						||
| 
								 | 
							
								#define IT8951_DIS_AUTO_LUT   0
							 | 
						||
| 
								 | 
							
								#define IT8951_EN_AUTO_LUT    1
							 | 
						||
| 
								 | 
							
								//LUT Engine Status
							 | 
						||
| 
								 | 
							
								#define IT8951_ALL_LUTE_BUSY 0xFFFF
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								// IT8951 TCon Registers defines
							 | 
						||
| 
								 | 
							
								//-----------------------------------------------------------------------
							 | 
						||
| 
								 | 
							
								//Register Base Address
							 | 
						||
| 
								 | 
							
								#define DISPLAY_REG_BASE 0x1000               //Register RW access for I80 only
							 | 
						||
| 
								 | 
							
								//Base Address of Basic LUT Registers
							 | 
						||
| 
								 | 
							
								#define LUT0EWHR  (DISPLAY_REG_BASE + 0x00)   //LUT0 Engine Width Height Reg
							 | 
						||
| 
								 | 
							
								#define LUT0XYR   (DISPLAY_REG_BASE + 0x40)   //LUT0 XY Reg
							 | 
						||
| 
								 | 
							
								#define LUT0BADDR (DISPLAY_REG_BASE + 0x80)   //LUT0 Base Address Reg
							 | 
						||
| 
								 | 
							
								#define LUT0MFN   (DISPLAY_REG_BASE + 0xC0)   //LUT0 Mode and Frame number Reg
							 | 
						||
| 
								 | 
							
								#define LUT01AF   (DISPLAY_REG_BASE + 0x114)  //LUT0 and LUT1 Active Flag Reg
							 | 
						||
| 
								 | 
							
								//Update Parameter Setting Register
							 | 
						||
| 
								 | 
							
								#define UP0SR (DISPLAY_REG_BASE + 0x134)      //Update Parameter0 Setting Reg
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define UP1SR     (DISPLAY_REG_BASE + 0x138)  //Update Parameter1 Setting Reg
							 | 
						||
| 
								 | 
							
								#define LUT0ABFRV (DISPLAY_REG_BASE + 0x13C)  //LUT0 Alpha blend and Fill rectangle Value
							 | 
						||
| 
								 | 
							
								#define UPBBADDR  (DISPLAY_REG_BASE + 0x17C)  //Update Buffer Base Address
							 | 
						||
| 
								 | 
							
								#define LUT0IMXY  (DISPLAY_REG_BASE + 0x180)  //LUT0 Image buffer X/Y offset Reg
							 | 
						||
| 
								 | 
							
								#define LUTAFSR   (DISPLAY_REG_BASE + 0x224)  //LUT Status Reg (status of All LUT Engines)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define BGVR      (DISPLAY_REG_BASE + 0x250)  //Bitmap (1bpp) image color table
							 | 
						||
| 
								 | 
							
								//-------System Registers----------------
							 | 
						||
| 
								 | 
							
								#define SYS_REG_BASE 0x0000
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//Address of System Registers
							 | 
						||
| 
								 | 
							
								#define I80CPCR (SYS_REG_BASE + 0x04)
							 | 
						||
| 
								 | 
							
								//-------Memory Converter Registers----------------
							 | 
						||
| 
								 | 
							
								#define MCSR_BASE_ADDR 0x0200
							 | 
						||
| 
								 | 
							
								#define MCSR (MCSR_BASE_ADDR  + 0x0000)
							 | 
						||
| 
								 | 
							
								#define LISAR (MCSR_BASE_ADDR + 0x0008)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void InterfaceInit(void);
							 | 
						||
| 
								 | 
							
								//void HostInit(void);
							 | 
						||
| 
								 | 
							
								uint8_t IT8951_Init(void);
							 | 
						||
| 
								 | 
							
								void IT8951_Cancel(void);
							 | 
						||
| 
								 | 
							
								void IT8951DisplayExample(void);
							 | 
						||
| 
								 | 
							
								void IT8951DisplayExample2(void);
							 | 
						||
| 
								 | 
							
								void IT8951Display1bppExample2(void);
							 | 
						||
| 
								 | 
							
								void IT8951DisplayExample3(void);
							 | 
						||
| 
								 | 
							
								void IT8951_GUI_Example(void);
							 | 
						||
| 
								 | 
							
								void IT8951_BMP_Example(uint32_t x, uint32_t y,char *path);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//temp
							 | 
						||
| 
								 | 
							
								uint16_t IT8951ReadReg(uint16_t usRegAddr);
							 | 
						||
| 
								 | 
							
								void IT8951SetImgBufBaseAddr(uint32_t ulImgBufAddr);
							 | 
						||
| 
								 | 
							
								void LCDWaitForReady(void);
							 | 
						||
| 
								 | 
							
								void GetIT8951SystemInfo(void* pBuf);
							 | 
						||
| 
								 | 
							
								void gpio_i80_16b_cmd_out(uint16_t usCmd);
							 | 
						||
| 
								 | 
							
								void GPIO_Configuration_Out(void);
							 | 
						||
| 
								 | 
							
								void GPIO_Configuration_In(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void IT8951DisplayClear(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//uint16_t IT8951ReadReg(uint16_t usRegAddr);
							 | 
						||
| 
								 | 
							
								void IT8951WriteReg(uint16_t usRegAddr,uint16_t usValue);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |