From 3356b5a5441e8ad5f0d623a53c25b5ec8a3bfa1d Mon Sep 17 00:00:00 2001 From: Joel Bodenmann Date: Sun, 26 Oct 2014 15:18:03 +0100 Subject: Fixing wrong driver name --- drivers/gdisp/LGD4532/board_LGD4532_template.h | 71 ----- drivers/gdisp/LGD4532/driver.mk | 2 - drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c | 359 ----------------------- drivers/gdisp/LGD4532/gdisp_lld_config.h | 21 -- drivers/gdisp/LGDP4532/board_LGDP4532_template.h | 71 +++++ drivers/gdisp/LGDP4532/driver.mk | 2 + drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c | 359 +++++++++++++++++++++++ drivers/gdisp/LGDP4532/gdisp_lld_config.h | 21 ++ 8 files changed, 453 insertions(+), 453 deletions(-) delete mode 100644 drivers/gdisp/LGD4532/board_LGD4532_template.h delete mode 100644 drivers/gdisp/LGD4532/driver.mk delete mode 100644 drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c delete mode 100644 drivers/gdisp/LGD4532/gdisp_lld_config.h create mode 100644 drivers/gdisp/LGDP4532/board_LGDP4532_template.h create mode 100644 drivers/gdisp/LGDP4532/driver.mk create mode 100644 drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c create mode 100644 drivers/gdisp/LGDP4532/gdisp_lld_config.h (limited to 'drivers') diff --git a/drivers/gdisp/LGD4532/board_LGD4532_template.h b/drivers/gdisp/LGD4532/board_LGD4532_template.h deleted file mode 100644 index ca89cdc1..00000000 --- a/drivers/gdisp/LGD4532/board_LGD4532_template.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -#ifndef GDISP_LLD_BOARD_H -#define GDISP_LLD_BOARD_H - -static inline void init_board(GDisplay *g) -{ - (void) g; -} - -static inline void post_init_board(GDisplay *g) -{ - (void) g; -} - -static inline void setpin_reset(GDisplay *g, bool_t state) -{ - (void) g; - (void) state; -} - -static inline void set_backlight(GDisplay *g, uint8_t percent) -{ - (void) g; - (void) percent; -} - -static inline void acquire_bus(GDisplay *g) -{ - (void) g; -} - -static inline void release_bus(GDisplay *g) -{ - (void) g; -} - -static inline void write_index(GDisplay *g, uint16_t index) -{ - (void) g; - (void) index; -} - -static inline void write_data(GDisplay *g, uint16_t data) -{ - (void) g; - (void) data; -} - -static inline void setreadmode(GDisplay *g) -{ - (void) g; -} - -static inline void setwritemode(GDisplay *g) -{ - (void) g; -} - -static inline uint16_t read_data(GDisplay *g) -{ - (void) g; - return 0; -} - -#endif /* GDISP_LLD_BOARD_H */ diff --git a/drivers/gdisp/LGD4532/driver.mk b/drivers/gdisp/LGD4532/driver.mk deleted file mode 100644 index 8323b891..00000000 --- a/drivers/gdisp/LGD4532/driver.mk +++ /dev/null @@ -1,2 +0,0 @@ -GFXINC += $(GFXLIB)/drivers/gdisp/LGD4532 -GFXSRC += $(GFXLIB)/drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c diff --git a/drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c b/drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c deleted file mode 100644 index 1cd58f16..00000000 --- a/drivers/gdisp/LGD4532/gdisp_lld_LGD4532.c +++ /dev/null @@ -1,359 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -#include "gfx.h" - -#if GFX_USE_GDISP - -/* This controller is only ever used with a 240 x 320 display */ -#if defined(GDISP_SCREEN_HEIGHT) - #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." - #undef GDISP_SCREEN_HEIGHT -#endif -#if defined(GDISP_SCREEN_WIDTH) - #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." - #undef GDISP_SCREEN_WIDTH -#endif - -#define GDISP_DRIVER_VMT GDISPVMT_LGD4532 -#include "gdisp_lld_config.h" -#include "src/gdisp/driver.h" - -#include "board_LGD4532.h" - -/*===========================================================================*/ -/* Driver local definitions. */ -/*===========================================================================*/ - -#ifndef GDISP_SCREEN_HEIGHT - #define GDISP_SCREEN_HEIGHT 320 -#endif -#ifndef GDISP_SCREEN_WIDTH - #define GDISP_SCREEN_WIDTH 240 -#endif -#ifndef GDISP_INITIAL_CONTRAST - #define GDISP_INITIAL_CONTRAST 50 -#endif -#ifndef GDISP_INITIAL_BACKLIGHT - #define GDISP_INITIAL_BACKLIGHT 100 -#endif - -/*===========================================================================*/ -/* Driver local variables. */ -/*===========================================================================*/ - -/*===========================================================================*/ -/* Driver local functions. */ -/*===========================================================================*/ - -// Some common routines and macros -#define dummy_read(g) { volatile uint16_t dummy; dummy = read_data(g); (void) dummy; } -#define write_reg(g, reg, data) { write_index(g, reg); write_data(g, data); } - -static void set_cursor(GDisplay *g) { - switch(g->g.Orientation) { - default: - case GDISP_ROTATE_0: - case GDISP_ROTATE_180: - write_reg(g, 0x20, g->p.x); - write_reg(g, 0x21, g->p.y); - break; - - case GDISP_ROTATE_90: - case GDISP_ROTATE_270: - write_reg(g, 0x20, g->p.y); - write_reg(g, 0x21, g->p.x); - break; - } - write_index(g, 0x22); -} - -static void set_viewport(GDisplay* g) { - switch(g->g.Orientation) { - default: - case GDISP_ROTATE_0: - case GDISP_ROTATE_180: - write_reg(g, 0x50, g->p.x); - write_reg(g, 0x51, g->p.x + g->p.cx - 1); - write_reg(g, 0x52, g->p.y); - write_reg(g, 0x53, g->p.y + g->p.cy - 1); - break; - - case GDISP_ROTATE_90: - case GDISP_ROTATE_270: - write_reg(g, 0x50, g->p.y); - write_reg(g, 0x51, g->p.y + g->p.cy - 1); - write_reg(g, 0x52, g->p.x); - write_reg(g, 0x53, g->p.x + g->p.cx - 1); - break; - } -} - -LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { - // No private area for this controller - g->priv = 0; - - // Initialise the board interface - init_board(g); - - /* Hardware reset */ - setpin_reset(g, TRUE); - gfxSleepMilliseconds(1); - setpin_reset(g, FALSE); - gfxSleepMilliseconds(2); - - acquire_bus(g); - setwritemode(g); - - // chinese code starts here - //############# void Power_Set(void) ################// - write_reg(g, 0x00, 0x0001); - gfxSleepMilliseconds(10); - - write_reg(g, 0x15, 0x0030); - write_reg(g, 0x11, 0x0040); - write_reg(g, 0x10, 0x1628); - write_reg(g, 0x12, 0x0000); - write_reg(g, 0x13, 0x104d); - gfxSleepMilliseconds(10); - write_reg(g, 0x12, 0x0010); - gfxSleepMilliseconds(10); - write_reg(g, 0x10, 0x2620); - write_reg(g, 0x13, 0x344d); //304d - gfxSleepMilliseconds(10); - - write_reg(g, 0x01, 0x0100); - write_reg(g, 0x02, 0x0300); - write_reg(g, 0x03, 0x1038);//0x1030 - write_reg(g, 0x08, 0x0604); - write_reg(g, 0x09, 0x0000); - write_reg(g, 0x0A, 0x0008); - - write_reg(g, 0x41, 0x0002); - write_reg(g, 0x60, 0xA700); - write_reg(g, 0x61, 0x0001); - write_reg(g, 0x90, 0x0182); - write_reg(g, 0x93, 0x0001); - write_reg(g, 0xa3, 0x0010); - gfxSleepMilliseconds(10); - - //################# void Gamma_Set(void) ####################// - write_reg(g, 0x30, 0x0000); - write_reg(g, 0x31, 0x0502); - write_reg(g, 0x32, 0x0307); - write_reg(g, 0x33, 0x0305); - write_reg(g, 0x34, 0x0004); - write_reg(g, 0x35, 0x0402); - write_reg(g, 0x36, 0x0707); - write_reg(g, 0x37, 0x0503); - write_reg(g, 0x38, 0x1505); - write_reg(g, 0x39, 0x1505); - gfxSleepMilliseconds(10); - - //################## void Display_ON(void) ####################// - write_reg(g, 0x07, 0x0001); - gfxSleepMilliseconds(10); - write_reg(g, 0x07, 0x0021); - write_reg(g, 0x07, 0x0023); - gfxSleepMilliseconds(10); - write_reg(g, 0x07, 0x0033); - gfxSleepMilliseconds(10); - write_reg(g, 0x07, 0x0133); - // chinese code ends here - - // Finish Init - post_init_board(g); - - // Release the bus - release_bus(g); - - // Turn on the backlight - set_backlight(g, GDISP_INITIAL_BACKLIGHT); - - /* Initialise the GDISP structure */ - g->g.Width = GDISP_SCREEN_WIDTH; - g->g.Height = GDISP_SCREEN_HEIGHT; - g->g.Orientation = GDISP_ROTATE_0; - g->g.Powermode = powerOn; - g->g.Backlight = GDISP_INITIAL_BACKLIGHT; - g->g.Contrast = GDISP_INITIAL_CONTRAST; - - return TRUE; -} - -#if GDISP_HARDWARE_STREAM_WRITE - LLDSPEC void gdisp_lld_write_start(GDisplay *g) { - acquire_bus(g); - set_viewport(g); - } - LLDSPEC void gdisp_lld_write_color(GDisplay *g) { - write_data(g, gdispColor2Native(g->p.color)); - } - LLDSPEC void gdisp_lld_write_stop(GDisplay *g) { - release_bus(g); - } - LLDSPEC void gdisp_lld_write_pos(GDisplay *g) { - set_cursor(g); - } -#endif - -#if GDISP_HARDWARE_STREAM_READ - LLDSPEC void gdisp_lld_read_start(GDisplay *g) { - acquire_bus(g); - set_viewport(g); - set_cursor(g); - setreadmode(g); - dummy_read(g); - } - LLDSPEC color_t gdisp_lld_read_color(GDisplay *g) { - uint16_t data; - - data = read_data(g); - return gdispNative2Color(data); - } - LLDSPEC void gdisp_lld_read_stop(GDisplay *g) { - setwritemode(g); - release_bus(g); - } -#endif - -#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL - LLDSPEC void gdisp_lld_control(GDisplay *g) { - switch(g->p.x) { - case GDISP_CONTROL_POWER: - if (g->g.Powermode == (powermode_t)g->p.ptr) - return; - switch((powermode_t)g->p.ptr) { - case powerOff: - acquire_bus(g); - write_reg(g, 0x07, 0x0000); - write_reg(g, 0x10, 0x0000); - write_reg(g, 0x11, 0x0000); - write_reg(g, 0x12, 0x0000); - write_reg(g, 0x13, 0x0000); - release_bus(g); - set_backlight(g, 0); - break; - - case powerOn: - //*************Power On sequence ******************// - acquire_bus(g); - write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ - write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ - gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ - write_reg(g, 0x10, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ - write_reg(g, 0x11, 0x0147); /* DC1[2:0], DC0[2:0], VC[2:0] */ - gfxSleepMilliseconds(50); - write_reg(g, 0x12, 0x013C); /* VREG1OUT voltage */ - gfxSleepMilliseconds(50); - write_reg(g, 0x13, 0x0E00); /* VDV[4:0] for VCOM amplitude */ - write_reg(g, 0x29, 0x0009); /* VCM[4:0] for VCOMH */ - gfxSleepMilliseconds(50); - write_reg(g, 0x07, 0x0173); /* 262K color and display ON */ - release_bus(g); - set_backlight(g, g->g.Backlight); - break; - - case powerSleep: - acquire_bus(g); - write_reg(g, 0x07, 0x0000); /* display OFF */ - write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ - write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ - write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ - gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ - write_reg(g, 0x10, 0x0002); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ - release_bus(g); - set_backlight(g, g->g.Backlight); - break; - - case powerDeepSleep: - acquire_bus(g); - write_reg(g, 0x07, 0x0000); /* display OFF */ - write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ - write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ - write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ - write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ - gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ - write_reg(g, 0x10, 0x0004); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ - release_bus(g); - set_backlight(g, g->g.Backlight); - break; - - default: - return; - } - g->g.Powermode = (powermode_t)g->p.ptr; - return; - - case GDISP_CONTROL_ORIENTATION: - if (g->g.Orientation == (orientation_t)g->p.ptr) - return; - switch((orientation_t)g->p.ptr) { - case GDISP_ROTATE_0: - acquire_bus(g); - write_reg(g, 0x01, 0x0100); - write_reg(g, 0x03, 0x1030); - write_reg(g, 0x60, 0x2700); - release_bus(g); - g->g.Height = GDISP_SCREEN_HEIGHT; - g->g.Width = GDISP_SCREEN_WIDTH; - break; - - case GDISP_ROTATE_90: - acquire_bus(g); - write_reg(g, 0x01, 0x0100); - write_reg(g, 0x03, 0x1038); - write_reg(g, 0x60, 0xA700); - release_bus(g); - g->g.Height = GDISP_SCREEN_WIDTH; - g->g.Width = GDISP_SCREEN_HEIGHT; - break; - - case GDISP_ROTATE_180: - acquire_bus(g); - write_reg(g, 0x01, 0x0000); - write_reg(g, 0x03, 0x1030); - write_reg(g, 0x60, 0xa700); - release_bus(g); - g->g.Height = GDISP_SCREEN_HEIGHT; - g->g.Width = GDISP_SCREEN_WIDTH; - break; - - case GDISP_ROTATE_270: - acquire_bus(g); - write_reg(g, 0x01, 0x0000); - write_reg(g, 0x03, 0x1038); - write_reg(g, 0x60, 0x2700); - release_bus(g); - g->g.Height = GDISP_SCREEN_WIDTH; - g->g.Width = GDISP_SCREEN_HEIGHT; - break; - - default: - return; - } - - g->g.Orientation = (orientation_t)g->p.ptr; - return; - - case GDISP_CONTROL_BACKLIGHT: - if ((unsigned)g->p.ptr > 100) - g->p.ptr = (void *)100; - set_backlight(g, (unsigned)g->p.ptr); - g->g.Backlight = (unsigned)g->p.ptr; - return; - - default: - return; - } - } -#endif - -#endif /* GFX_USE_GDISP */ diff --git a/drivers/gdisp/LGD4532/gdisp_lld_config.h b/drivers/gdisp/LGD4532/gdisp_lld_config.h deleted file mode 100644 index 3f11ecc3..00000000 --- a/drivers/gdisp/LGD4532/gdisp_lld_config.h +++ /dev/null @@ -1,21 +0,0 @@ -/* - * This file is subject to the terms of the GFX License. If a copy of - * the license was not distributed with this file, you can obtain one at: - * - * http://ugfx.org/license.html - */ - -#ifndef GDISP_LLD_CONFIG_H -#define GDISP_LLD_CONFIG_H - -#if GFX_USE_GDISP - -#define GDISP_HARDWARE_STREAM_WRITE TRUE -#define GDISP_HARDWARE_STREAM_READ TRUE -#define GDISP_HARDWARE_STREAM_POS TRUE -#define GDISP_HARDWARE_CONTROL TRUE - -#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_RGB565 - -#endif /* GFX_USE_GDISP */ -#endif /* _GDISP_LLD_CONFIG_H */ diff --git a/drivers/gdisp/LGDP4532/board_LGDP4532_template.h b/drivers/gdisp/LGDP4532/board_LGDP4532_template.h new file mode 100644 index 00000000..ca89cdc1 --- /dev/null +++ b/drivers/gdisp/LGDP4532/board_LGDP4532_template.h @@ -0,0 +1,71 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef GDISP_LLD_BOARD_H +#define GDISP_LLD_BOARD_H + +static inline void init_board(GDisplay *g) +{ + (void) g; +} + +static inline void post_init_board(GDisplay *g) +{ + (void) g; +} + +static inline void setpin_reset(GDisplay *g, bool_t state) +{ + (void) g; + (void) state; +} + +static inline void set_backlight(GDisplay *g, uint8_t percent) +{ + (void) g; + (void) percent; +} + +static inline void acquire_bus(GDisplay *g) +{ + (void) g; +} + +static inline void release_bus(GDisplay *g) +{ + (void) g; +} + +static inline void write_index(GDisplay *g, uint16_t index) +{ + (void) g; + (void) index; +} + +static inline void write_data(GDisplay *g, uint16_t data) +{ + (void) g; + (void) data; +} + +static inline void setreadmode(GDisplay *g) +{ + (void) g; +} + +static inline void setwritemode(GDisplay *g) +{ + (void) g; +} + +static inline uint16_t read_data(GDisplay *g) +{ + (void) g; + return 0; +} + +#endif /* GDISP_LLD_BOARD_H */ diff --git a/drivers/gdisp/LGDP4532/driver.mk b/drivers/gdisp/LGDP4532/driver.mk new file mode 100644 index 00000000..19d510b7 --- /dev/null +++ b/drivers/gdisp/LGDP4532/driver.mk @@ -0,0 +1,2 @@ +GFXINC += $(GFXLIB)/drivers/gdisp/LGDP4532 +GFXSRC += $(GFXLIB)/drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c diff --git a/drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c b/drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c new file mode 100644 index 00000000..ceeca05f --- /dev/null +++ b/drivers/gdisp/LGDP4532/gdisp_lld_LGDP4532.c @@ -0,0 +1,359 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#include "gfx.h" + +#if GFX_USE_GDISP + +/* This controller is only ever used with a 240 x 320 display */ +#if defined(GDISP_SCREEN_HEIGHT) + #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." + #undef GDISP_SCREEN_HEIGHT +#endif +#if defined(GDISP_SCREEN_WIDTH) + #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored." + #undef GDISP_SCREEN_WIDTH +#endif + +#define GDISP_DRIVER_VMT GDISPVMT_LGDP4532 +#include "gdisp_lld_config.h" +#include "src/gdisp/driver.h" + +#include "board_LGDP4532.h" + +/*===========================================================================*/ +/* Driver local definitions. */ +/*===========================================================================*/ + +#ifndef GDISP_SCREEN_HEIGHT + #define GDISP_SCREEN_HEIGHT 320 +#endif +#ifndef GDISP_SCREEN_WIDTH + #define GDISP_SCREEN_WIDTH 240 +#endif +#ifndef GDISP_INITIAL_CONTRAST + #define GDISP_INITIAL_CONTRAST 50 +#endif +#ifndef GDISP_INITIAL_BACKLIGHT + #define GDISP_INITIAL_BACKLIGHT 100 +#endif + +/*===========================================================================*/ +/* Driver local variables. */ +/*===========================================================================*/ + +/*===========================================================================*/ +/* Driver local functions. */ +/*===========================================================================*/ + +// Some common routines and macros +#define dummy_read(g) { volatile uint16_t dummy; dummy = read_data(g); (void) dummy; } +#define write_reg(g, reg, data) { write_index(g, reg); write_data(g, data); } + +static void set_cursor(GDisplay *g) { + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + case GDISP_ROTATE_180: + write_reg(g, 0x20, g->p.x); + write_reg(g, 0x21, g->p.y); + break; + + case GDISP_ROTATE_90: + case GDISP_ROTATE_270: + write_reg(g, 0x20, g->p.y); + write_reg(g, 0x21, g->p.x); + break; + } + write_index(g, 0x22); +} + +static void set_viewport(GDisplay* g) { + switch(g->g.Orientation) { + default: + case GDISP_ROTATE_0: + case GDISP_ROTATE_180: + write_reg(g, 0x50, g->p.x); + write_reg(g, 0x51, g->p.x + g->p.cx - 1); + write_reg(g, 0x52, g->p.y); + write_reg(g, 0x53, g->p.y + g->p.cy - 1); + break; + + case GDISP_ROTATE_90: + case GDISP_ROTATE_270: + write_reg(g, 0x50, g->p.y); + write_reg(g, 0x51, g->p.y + g->p.cy - 1); + write_reg(g, 0x52, g->p.x); + write_reg(g, 0x53, g->p.x + g->p.cx - 1); + break; + } +} + +LLDSPEC bool_t gdisp_lld_init(GDisplay *g) { + // No private area for this controller + g->priv = 0; + + // Initialise the board interface + init_board(g); + + /* Hardware reset */ + setpin_reset(g, TRUE); + gfxSleepMilliseconds(1); + setpin_reset(g, FALSE); + gfxSleepMilliseconds(2); + + acquire_bus(g); + setwritemode(g); + + // chinese code starts here + //############# void Power_Set(void) ################// + write_reg(g, 0x00, 0x0001); + gfxSleepMilliseconds(10); + + write_reg(g, 0x15, 0x0030); + write_reg(g, 0x11, 0x0040); + write_reg(g, 0x10, 0x1628); + write_reg(g, 0x12, 0x0000); + write_reg(g, 0x13, 0x104d); + gfxSleepMilliseconds(10); + write_reg(g, 0x12, 0x0010); + gfxSleepMilliseconds(10); + write_reg(g, 0x10, 0x2620); + write_reg(g, 0x13, 0x344d); //304d + gfxSleepMilliseconds(10); + + write_reg(g, 0x01, 0x0100); + write_reg(g, 0x02, 0x0300); + write_reg(g, 0x03, 0x1038);//0x1030 + write_reg(g, 0x08, 0x0604); + write_reg(g, 0x09, 0x0000); + write_reg(g, 0x0A, 0x0008); + + write_reg(g, 0x41, 0x0002); + write_reg(g, 0x60, 0xA700); + write_reg(g, 0x61, 0x0001); + write_reg(g, 0x90, 0x0182); + write_reg(g, 0x93, 0x0001); + write_reg(g, 0xa3, 0x0010); + gfxSleepMilliseconds(10); + + //################# void Gamma_Set(void) ####################// + write_reg(g, 0x30, 0x0000); + write_reg(g, 0x31, 0x0502); + write_reg(g, 0x32, 0x0307); + write_reg(g, 0x33, 0x0305); + write_reg(g, 0x34, 0x0004); + write_reg(g, 0x35, 0x0402); + write_reg(g, 0x36, 0x0707); + write_reg(g, 0x37, 0x0503); + write_reg(g, 0x38, 0x1505); + write_reg(g, 0x39, 0x1505); + gfxSleepMilliseconds(10); + + //################## void Display_ON(void) ####################// + write_reg(g, 0x07, 0x0001); + gfxSleepMilliseconds(10); + write_reg(g, 0x07, 0x0021); + write_reg(g, 0x07, 0x0023); + gfxSleepMilliseconds(10); + write_reg(g, 0x07, 0x0033); + gfxSleepMilliseconds(10); + write_reg(g, 0x07, 0x0133); + // chinese code ends here + + // Finish Init + post_init_board(g); + + // Release the bus + release_bus(g); + + // Turn on the backlight + set_backlight(g, GDISP_INITIAL_BACKLIGHT); + + /* Initialise the GDISP structure */ + g->g.Width = GDISP_SCREEN_WIDTH; + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Orientation = GDISP_ROTATE_0; + g->g.Powermode = powerOn; + g->g.Backlight = GDISP_INITIAL_BACKLIGHT; + g->g.Contrast = GDISP_INITIAL_CONTRAST; + + return TRUE; +} + +#if GDISP_HARDWARE_STREAM_WRITE + LLDSPEC void gdisp_lld_write_start(GDisplay *g) { + acquire_bus(g); + set_viewport(g); + } + LLDSPEC void gdisp_lld_write_color(GDisplay *g) { + write_data(g, gdispColor2Native(g->p.color)); + } + LLDSPEC void gdisp_lld_write_stop(GDisplay *g) { + release_bus(g); + } + LLDSPEC void gdisp_lld_write_pos(GDisplay *g) { + set_cursor(g); + } +#endif + +#if GDISP_HARDWARE_STREAM_READ + LLDSPEC void gdisp_lld_read_start(GDisplay *g) { + acquire_bus(g); + set_viewport(g); + set_cursor(g); + setreadmode(g); + dummy_read(g); + } + LLDSPEC color_t gdisp_lld_read_color(GDisplay *g) { + uint16_t data; + + data = read_data(g); + return gdispNative2Color(data); + } + LLDSPEC void gdisp_lld_read_stop(GDisplay *g) { + setwritemode(g); + release_bus(g); + } +#endif + +#if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL + LLDSPEC void gdisp_lld_control(GDisplay *g) { + switch(g->p.x) { + case GDISP_CONTROL_POWER: + if (g->g.Powermode == (powermode_t)g->p.ptr) + return; + switch((powermode_t)g->p.ptr) { + case powerOff: + acquire_bus(g); + write_reg(g, 0x07, 0x0000); + write_reg(g, 0x10, 0x0000); + write_reg(g, 0x11, 0x0000); + write_reg(g, 0x12, 0x0000); + write_reg(g, 0x13, 0x0000); + release_bus(g); + set_backlight(g, 0); + break; + + case powerOn: + //*************Power On sequence ******************// + acquire_bus(g); + write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ + write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ + write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ + write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ + gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ + write_reg(g, 0x10, 0x17B0); /* SAP, BT[3:0], AP, DSTB, SLP, STB */ + write_reg(g, 0x11, 0x0147); /* DC1[2:0], DC0[2:0], VC[2:0] */ + gfxSleepMilliseconds(50); + write_reg(g, 0x12, 0x013C); /* VREG1OUT voltage */ + gfxSleepMilliseconds(50); + write_reg(g, 0x13, 0x0E00); /* VDV[4:0] for VCOM amplitude */ + write_reg(g, 0x29, 0x0009); /* VCM[4:0] for VCOMH */ + gfxSleepMilliseconds(50); + write_reg(g, 0x07, 0x0173); /* 262K color and display ON */ + release_bus(g); + set_backlight(g, g->g.Backlight); + break; + + case powerSleep: + acquire_bus(g); + write_reg(g, 0x07, 0x0000); /* display OFF */ + write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ + write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ + write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ + write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ + gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ + write_reg(g, 0x10, 0x0002); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ + release_bus(g); + set_backlight(g, g->g.Backlight); + break; + + case powerDeepSleep: + acquire_bus(g); + write_reg(g, 0x07, 0x0000); /* display OFF */ + write_reg(g, 0x10, 0x0000); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ + write_reg(g, 0x11, 0x0000); /* DC1[2:0], DC0[2:0], VC[2:0] */ + write_reg(g, 0x12, 0x0000); /* VREG1OUT voltage */ + write_reg(g, 0x13, 0x0000); /* VDV[4:0] for VCOM amplitude */ + gfxSleepMilliseconds(200); /* Dis-charge capacitor power voltage */ + write_reg(g, 0x10, 0x0004); /* SAP, BT[3:0], APE, AP, DSTB, SLP */ + release_bus(g); + set_backlight(g, g->g.Backlight); + break; + + default: + return; + } + g->g.Powermode = (powermode_t)g->p.ptr; + return; + + case GDISP_CONTROL_ORIENTATION: + if (g->g.Orientation == (orientation_t)g->p.ptr) + return; + switch((orientation_t)g->p.ptr) { + case GDISP_ROTATE_0: + acquire_bus(g); + write_reg(g, 0x01, 0x0100); + write_reg(g, 0x03, 0x1030); + write_reg(g, 0x60, 0x2700); + release_bus(g); + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + + case GDISP_ROTATE_90: + acquire_bus(g); + write_reg(g, 0x01, 0x0100); + write_reg(g, 0x03, 0x1038); + write_reg(g, 0x60, 0xA700); + release_bus(g); + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + + case GDISP_ROTATE_180: + acquire_bus(g); + write_reg(g, 0x01, 0x0000); + write_reg(g, 0x03, 0x1030); + write_reg(g, 0x60, 0xa700); + release_bus(g); + g->g.Height = GDISP_SCREEN_HEIGHT; + g->g.Width = GDISP_SCREEN_WIDTH; + break; + + case GDISP_ROTATE_270: + acquire_bus(g); + write_reg(g, 0x01, 0x0000); + write_reg(g, 0x03, 0x1038); + write_reg(g, 0x60, 0x2700); + release_bus(g); + g->g.Height = GDISP_SCREEN_WIDTH; + g->g.Width = GDISP_SCREEN_HEIGHT; + break; + + default: + return; + } + + g->g.Orientation = (orientation_t)g->p.ptr; + return; + + case GDISP_CONTROL_BACKLIGHT: + if ((unsigned)g->p.ptr > 100) + g->p.ptr = (void *)100; + set_backlight(g, (unsigned)g->p.ptr); + g->g.Backlight = (unsigned)g->p.ptr; + return; + + default: + return; + } + } +#endif + +#endif /* GFX_USE_GDISP */ diff --git a/drivers/gdisp/LGDP4532/gdisp_lld_config.h b/drivers/gdisp/LGDP4532/gdisp_lld_config.h new file mode 100644 index 00000000..3f11ecc3 --- /dev/null +++ b/drivers/gdisp/LGDP4532/gdisp_lld_config.h @@ -0,0 +1,21 @@ +/* + * This file is subject to the terms of the GFX License. If a copy of + * the license was not distributed with this file, you can obtain one at: + * + * http://ugfx.org/license.html + */ + +#ifndef GDISP_LLD_CONFIG_H +#define GDISP_LLD_CONFIG_H + +#if GFX_USE_GDISP + +#define GDISP_HARDWARE_STREAM_WRITE TRUE +#define GDISP_HARDWARE_STREAM_READ TRUE +#define GDISP_HARDWARE_STREAM_POS TRUE +#define GDISP_HARDWARE_CONTROL TRUE + +#define GDISP_LLD_PIXELFORMAT GDISP_PIXELFORMAT_RGB565 + +#endif /* GFX_USE_GDISP */ +#endif /* _GDISP_LLD_CONFIG_H */ -- cgit v1.2.3