| /*   | 
 |  * (C) Copyright 2016, ZIXC Corporation. | 
 |  * | 
 |  */ | 
 |  | 
 | #ifndef _LCD_H_ | 
 | #define _LCD_H_ | 
 |  | 
 | #include <common.h> | 
 |  | 
 | //#include "types.h" | 
 | /* return code */ | 
 | #define DRV_SUCCESS                     0         /* successed */ | 
 | #define DRV_ERROR                       -1          /* failed */ | 
 | #define DRV_ERR_NOT_OPENED    -9         /* the device to operate hasn't been opened yet */ | 
 | #define DRV_ERR_OPEN_TIMES     -10       /* try to open a device which has been opened already */ | 
 |  | 
 | typedef unsigned int UINT32; | 
 |  | 
 | typedef enum | 
 | { | 
 |     LCD_DCX_CMD = 0,    // µÍµçƽÃüÁî | 
 |     LCD_DCX_DATA,       // ¸ßµçƽ²ÎÊý»òÊý¾Ý | 
 |  | 
 |     MAX_LCD_DCX_TYPE | 
 | } T_ZDrvLcd_DcxType; // transmission byte type | 
 |  | 
 | typedef enum | 
 | { | 
 |     LCD_XFER_POLL = 0, // ÂÖѯ·½Ê½ | 
 |     LCD_XFER_INT,       // ÖжϷ½Ê½ | 
 |     LCD_XFER_DMA,   // DMA·½Ê½ | 
 |     LCD_XFER_CPU, | 
 |  | 
 |     MAX_LCD_XFER_TYPE | 
 | } T_ZDrvLcd_XferType; | 
 |  | 
 | typedef enum zx297520_lcd_vendor | 
 | { | 
 |     VENDOR_YS = 0, | 
 |     VENDOR_LD = 1, | 
 |     VENDOR_TM = 2, | 
 |     VENDOR_NUM = 3, | 
 | }; | 
 |  | 
 | /* lcd mode */ | 
 | typedef enum | 
 | { | 
 |     LCD_NORMAL,        /* normal mode */ | 
 |     LCD_SLEEP,          /* sleep mode */ | 
 |  | 
 |     MAX_LCD_MODE | 
 | } T_ZDrvLcd_Mode; | 
 |  | 
 | /* lcd instance */ | 
 | typedef struct | 
 | { | 
 |     bool                        bOpen;  /* status: open, close */ | 
 |     T_ZDrvLcd_Mode          eMode;    /* working mode: normal, sleep */ | 
 |     T_ZDrvLcd_XferType      eXferType; /* poll, interrupt or DMA */ | 
 |     T_ZDrvLcd_DcxType       eDcxType; /* command or parameter/data */ | 
 | } T_ZDrvLcd_Instance; | 
 |  | 
 |  | 
 | typedef enum | 
 | { | 
 |     LCD_BACKLIGHT_OFF = 0, | 
 |     LCD_BACKLIGHT_ON, | 
 |  | 
 | } T_ZDrvLcd_BacklightStatus; | 
 |  | 
 | typedef unsigned int T_ZDrvLcd_Brightness; /* [0, 255]: 0 - darkest; 255 - brightest */ | 
 |  | 
 | /* lcd module list */ | 
 | typedef enum | 
 | { | 
 | 	ZGD_ST7735_128x160=0, | 
 | 	ZGD_GC910x_128x160, | 
 | 	ZGD_GC930x_240x320,  | 
 | 	ZGD_GC9306_240x320,  | 
 | 	ST7789V_240x320,	 | 
 | 	ST7567_128x64,	 | 
 | 	LEAD_ST7735_128x128, | 
 | 	LEAD_ST7735_128x128_F231E, | 
 | 	S93521A_128x128, | 
 | 	BOE7735S_128x128,	 | 
 | 	ST7789V_240x240,	 | 
 | 	ILI9342C_320x240,	 | 
 | 	 | 
 | 	MAX_LCD_ITEM | 
 | } T_ZDrvLcd_Module_List; | 
 |  | 
 |  | 
 | struct T_ZDrvLcd_Lcm_Id | 
 | { | 
 |     unsigned short			dev_id;    | 
 |     unsigned char 			man_id;     | 
 |     T_ZDrvLcd_Module_List	lcd_item;     | 
 |     char *name; | 
 | }; | 
 |  | 
 | struct T_ZDrvLcd_gpio_define | 
 | { | 
 |     UINT32	spi_cs_gpio;    | 
 |     UINT32	spi_scl_gpio; 	 | 
 |     UINT32	spi_sda_gpio;    | 
 |     UINT32	spi_dcx_gpio;  | 
 | 	 | 
 |     UINT32	spi_cs_func_sel;    | 
 |     UINT32	spi_scl_func_sel; 	 | 
 |     UINT32	spi_sda_func_sel;    | 
 |     UINT32	spi_dcx_func_sel;    | 
 | 	 | 
 |     UINT32	spi_cs_gpio_sel;    | 
 |     UINT32	spi_scl_gpio_sel; 	 | 
 |     UINT32	spi_sda_gpio_sel;    | 
 |     UINT32	spi_dcx_gpio_sel;    | 
 | 	UINT32	lcd_reset_gpio;	 | 
 | 	UINT32	lcd_reset_gpio_sel;	 | 
 | 	 | 
 | 	UINT32	lcd_blg_gpio;	 | 
 | 	UINT32	lcd_blg_gpio_sel;	 | 
 | }; | 
 |  | 
 | typedef struct | 
 | { | 
 |     unsigned short  width; | 
 |     unsigned short  height; | 
 |     unsigned short  bitsPerPixel; | 
 |     unsigned short  rMask; | 
 |     unsigned short  gMask; | 
 |     unsigned short  bMask; | 
 |     T_ZDrvLcd_Instance instance; | 
 |     T_ZDrvLcd_BacklightStatus backlight; | 
 |     T_ZDrvLcd_Brightness brightness; | 
 | 	struct T_ZDrvLcd_Lcm_Id lcm_info; | 
 | 	struct T_ZDrvLcd_gpio_define gpio_def; | 
 | } T_ZDrvLcd_Info; | 
 |  | 
 | struct lcd_opt{ | 
 |     int (*get_info)(T_ZDrvLcd_Info* lcd_info); | 
 |     int (*lcm_init)(void);  | 
 | 	int (*update_rect)(unsigned char *pBuf, unsigned short uiLeft, unsigned short uiTop, unsigned short uiWidth, unsigned short uiHeight); | 
 | }; | 
 |  | 
 | int zDrvLcd_BootPicFromRes(void); | 
 | int zDrvLcd_PowerOnLogo(void); | 
 | int zDrvLcd_ShowCharging(void); | 
 | int zDrvLcd_ShowUpdateWait(void); | 
 | int zDrvLcd_ShowUpdateSucc(void); | 
 | int zDrvLcd_ShowUpdateFail(void); | 
 | int zDrvLcd_ShowLowBattery(void); | 
 | int zDrvLcd_ShowNoBattery(void); | 
 | int zDrvLcd_TurnBacklightOnOff(unsigned int enable); | 
 |  | 
 | int zDrvLcd_Initiate(void); | 
 | int lcd_init(void); | 
 |  | 
 | #endif | 
 |  |