From d8927b45c80d1df9a7d2e5acadd91bce816e24fe Mon Sep 17 00:00:00 2001 From: yxj Date: Thu, 17 Nov 2011 17:21:11 +0800 Subject: [PATCH] add lcd support for K97 --- arch/arm/configs/rk29_k97_defconfig | 3 +- drivers/video/display/screen/Kconfig | 2 + drivers/video/display/screen/Makefile | 1 + .../video/display/screen/lcd_LG_LP097X02.c | 72 +++++++++++++++++++ 4 files changed, 77 insertions(+), 1 deletion(-) create mode 100755 drivers/video/display/screen/lcd_LG_LP097X02.c diff --git a/arch/arm/configs/rk29_k97_defconfig b/arch/arm/configs/rk29_k97_defconfig index 757ffeb4d607..db0d80003086 100644 --- a/arch/arm/configs/rk29_k97_defconfig +++ b/arch/arm/configs/rk29_k97_defconfig @@ -1761,13 +1761,14 @@ CONFIG_DISPLAY_SUPPORT=y # Display hardware drivers # # CONFIG_LCD_NULL is not set +CONFIG_LCD_LG_LP097X02=y # CONFIG_LCD_TD043MGEA1 is not set # CONFIG_LCD_HX8357 is not set # CONFIG_LCD_TJ048NC01CA is not set # CONFIG_LCD_HL070VM4AU is not set # CONFIG_LCD_HSD070IDW1 is not set # CONFIG_LCD_RGB_TFT480800_25_E is not set -CONFIG_LCD_HSD100PXN=y +# CONFIG_LCD_HSD100PXN is not set # CONFIG_LCD_HSD07PFW1 is not set # CONFIG_LCD_BYD8688FTGF is not set # CONFIG_LCD_B101AW06 is not set diff --git a/drivers/video/display/screen/Kconfig b/drivers/video/display/screen/Kconfig index 78a8b34365ed..d972c75ab89d 100755 --- a/drivers/video/display/screen/Kconfig +++ b/drivers/video/display/screen/Kconfig @@ -3,6 +3,8 @@ choice prompt "LCD Panel Select" config LCD_NULL bool "NULL" +config LCD_LG_LP097X02 + bool "RGB LCD_LG_LP097X02 1024X768" config LCD_TD043MGEA1 bool "RGB TD043MGEA1" config LCD_HX8357 diff --git a/drivers/video/display/screen/Makefile b/drivers/video/display/screen/Makefile index 79b670c71d4e..0ad22f5d5d7e 100755 --- a/drivers/video/display/screen/Makefile +++ b/drivers/video/display/screen/Makefile @@ -5,6 +5,7 @@ obj-$(CONFIG_LCD_TD043MGEA1) += lcd_td043mgea1.o obj-$(CONFIG_LCD_HSD070IDW1) += lcd_hsd800x480.o obj-$(CONFIG_LCD_HL070VM4AU) += lcd_hl070vm4.o obj-$(CONFIG_LCD_BYD8688FTGF) += lcd_byd1024x600.o +obj-$(CONFIG_LCD_LG_LP097X02)+= lcd_LG_LP097X02.o obj-$(CONFIG_LCD_TJ048NC01CA) += lcd_tj048nc01ca.o obj-$(CONFIG_LCD_A060SE02) += lcd_a060se02.o diff --git a/drivers/video/display/screen/lcd_LG_LP097X02.c b/drivers/video/display/screen/lcd_LG_LP097X02.c new file mode 100755 index 000000000000..3a4df9a27267 --- /dev/null +++ b/drivers/video/display/screen/lcd_LG_LP097X02.c @@ -0,0 +1,72 @@ +#include +#include +#include "../../rk29_fb.h" +#include +#include +#include +#include "screen.h" + +/* Base */ +#define OUT_TYPE SCREEN_RGB +#define OUT_FACE OUT_D888_P666 +#define OUT_CLK 100000000 +#define LCDC_ACLK 500000000 +/* Timing */ +#define H_PW 320 +#define H_BP 480 +#define H_VD 1024 +#define H_FP 260 + +#define V_PW 10 +#define V_BP 6 +#define V_VD 768 +#define V_FP 16 + +#define LCD_WIDTH 196// 142 // 202 +#define LCD_HEIGHT 147 //106// 152 +/* Other */ +#define DCLK_POL 0 // +#define SWAP_RB 0 + +void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info ) +{ + /* screen type & face */ + screen->type = OUT_TYPE; + screen->face = OUT_FACE; + + /* Screen size */ + screen->x_res = H_VD; + screen->y_res = V_VD; + + screen->width = LCD_WIDTH; + screen->height = LCD_HEIGHT; + + /* Timing */ + screen->lcdc_aclk = LCDC_ACLK; + screen->pixclock = OUT_CLK; + screen->left_margin = H_BP; + screen->right_margin = H_FP; + screen->hsync_len = H_PW; + screen->upper_margin = V_BP; + screen->lower_margin = V_FP; + screen->vsync_len = V_PW; + + /* Pin polarity */ + screen->pin_hsync = 0; + screen->pin_vsync = 0; + screen->pin_den = 0; + screen->pin_dclk = DCLK_POL; + + /* Swap rule */ + screen->swap_rb = SWAP_RB; + screen->swap_rg = 0; + screen->swap_gb = 0; + screen->swap_delta = 0; + screen->swap_dumy = 0; + + /* Operation function*/ + screen->init = NULL; + screen->standby = NULL; +} + + -- 2.34.1