122 lines
3.4 KiB
C

#ifndef _EPAPER_H_
#define _EPAPER_H_
//#define EPAPER_BOOT_CODE
#ifdef EPAPER_BOOT_CODE
#define AUO_EPAPER_6_INCH
//#define AUO_EPAPER_9_INCH
#else //kernel
#ifdef CONFIG_FB_AUOEPAPER_6
#define AUO_EPAPER_6_INCH
#else
#define AUO_EPAPER_9_INCH
#endif
#endif
#if defined(AUO_EPAPER_6_INCH)
#define AUO_EPAPER_PHYSICAL_H_RESOLUTION 800 //physical resolution
#define AUO_EPAPER_PHYSICAL_V_RESOLUTION 600 //physical resolution
#elif defined(AUO_EPAPER_9_INCH)
#define AUO_EPAPER_PHYSICAL_H_RESOLUTION 1024 //physical resolution
#define AUO_EPAPER_PHYSICAL_V_RESOLUTION 768 //physical resolution
#endif
typedef unsigned int DispErrorCode_t;
typedef enum
{
DISP_SUCCESS = 0,
DISP_TIMEOUT
}E_DISP_ERROR_CODE;
// AUO EPEPER COMMAND
#define AUO_EPAPER_CMD_INIT 0x0000
#define AUO_EPAPER_CMD_STANDBY 0x0001
#define AUO_EPAPER_CMD_WAKEUP 0x0002
#define AUO_EPAPER_CMD_FULLDISP 0x1000
#define AUO_EPAPER_CMD_PARTIALDISP 0x1001
#define AUO_EPAPER_CMD_STOP 0x1002
#define AUO_EPAPER_CMD_LUT_START 0x1003
#define AUO_EPAPER_CMD_REFRESH 0x1004
#define AUO_EPAPER_CMD_RESET 0x1005
#define AUO_EPAPER_CMD_ROTATION 0x1006
#define AUO_EPAPER_CMD_LUT_STOP 0x1009
#define AUO_EPAPER_CMD_FLASH_W 0x2000
#define AUO_EPAPER_CMD_FLASH_E 0x2001
#define AUO_EPAPER_CMD_FLASH_STS 0x2002
#define AUO_EPAPER_CMD_FRAMERATE 0x3000
#define AUO_EPAPER_CMD_TEMPER 0x4000
#define AUO_EPAPER_CMD_DRIVERTIMING 0x5000
#define AUO_EPAPER_CMD_LBALANCE 0x4000
#define AUO_EPAPER_CMD_LUT_READ 0x4003
#define AUO_EPAPER_CMD_AGINGMODE 0x6000
#define AUO_EPAPER_CMD_AGINGEXIT 0x6001
// AUO EPAPER PARA
#define PARTIAL_DSP_MODE_0 (0x0)
#define PARTIAL_DSP_MODE_1 (0x1)
#define PARTIAL_DSP_MODE_2 (0x2)
#define PARTIAL_DSP_MODE_3 (0x3) //Scroll Mode
#define PARTIAL_DSP_MODE_4 (0x4) //Handwriting
#define PARTIAL_DSP_MODE_0_NF (0x8)
#define PARTIAL_DSP_MODE_1_NF (0x9)
#define PARTIAL_DSP_MODE_2_NF (0xA)
#define PARTIAL_DSP_MODE_3_NF (0xB)
#define PARTIAL_DSP_MODE_4_W (0xC)
#define PARTIAL_DSP_MODE (PARTIAL_DSP_MODE_0<<12)
typedef struct T_DISPLAY_REGION_TAG
{
int X;
int Y;
int W;
int H;
} T_DISPLAY_REGION, *T_DISPLAY_REGION_P;
typedef struct T_DISPLAY_FRAME_TAG
{
unsigned short u16EpaperCommand;
T_DISPLAY_REGION tFrameRange;
unsigned short* pFrameData;
} T_DISPLAY_FRAME, *T_DISPLAY_FRAME_P;
//functions
void Epaper_SetLcdPort(void);
DispErrorCode_t Epaper_Disp(T_DISPLAY_FRAME tFrame);
int is_Epaper_Write_Ready(void);
int is_Epaper_Write_Ready_No_Wait(void);
int is_Epaper_Write_Ready_Wait(unsigned long waitTime); //ms
void Epaper_Set_Partial_Update_Mode(int mode);
int Epaper_Get_Partial_Update_Mode(void);
void Epaper_Set_Resolution(int h_res, int v_res);
void Epaper_Enter_Standby_Mode(int isEnter);
void Epaper_Enter_Sleep_Mode(int isEnter);
void Epaper_Power(int isEnable);
int Epaper_Init(int h_Res, int v_Res, int rotation, int data_inverse, int inputdata_arrangement, int outputdata_arrangement,int UD, int SHL);
void EPaper_CloseLcdPort(void);
void Epaper_Read_R_TEMP(unsigned short* val0, unsigned short* val1, unsigned short* val2, unsigned short* val3);
void Epaper_Display_Refresh(void);
int Epaper_Update_LUT(unsigned short* u16LUT, unsigned long u32LUTLength);
void Epaper_Read_LUT(unsigned short* u16LUT, unsigned long u32LUTLength);
void Epaper_Reset(void);
void Epaper_Clean_Panel(void);
void Epaper_Show_Progress(int percent);
#ifdef EPAPER_BOOT_CODE
#else //KERNEL
void Epaper_Draw_Point(int x, int y);
void Epaper_Shutdown_Logo(void);
#endif
#endif