rk30:add lcd_b101ew05 driver support from rk29
authorlw <lw@rock-chips.com>
Wed, 14 Mar 2012 02:34:56 +0000 (10:34 +0800)
committerlw <lw@rock-chips.com>
Wed, 14 Mar 2012 02:34:56 +0000 (10:34 +0800)
drivers/video/display/screen/Kconfig
drivers/video/display/screen/Makefile
drivers/video/display/screen/lcd_b101ew05.c [new file with mode: 0755]

index 93b615a882ddfab4bdbe2f63539d8f0fb4390423..83dc4da9b06502ed57adc4783dceb3d9554ffa38 100644 (file)
@@ -66,6 +66,8 @@ config LCD_TX23D88VM
        bool "HITACHI LVDS TX23D88VM (1200x800)"
 config LCD_A050VL01
        bool "RGB A050VL01"
+config LCD_B101EW05
+       bool "RGB lcd  panel B101EW05"
 endchoice
 
 
index fb11119fc84cbf4b69aa07455512c7043ce852cf..b37569a13afcb91ecd0c231b79c71c5188931786 100644 (file)
@@ -34,3 +34,4 @@ obj-$(CONFIG_LCD_AT070TNA2)    += lcd_AT070TNA2.o
 obj-$(CONFIG_LCD_TX23D88VM) += lcd_tx23d88vm.o
 obj-$(CONFIG_LCD_AT070TN93)    += lcd_at070tn93.o
 obj-$(CONFIG_LCD_A050VL01)    += lcd_A050VL01.o
+obj-$(CONFIG_LCD_B101EW05)    += lcd_b101ew05.o
diff --git a/drivers/video/display/screen/lcd_b101ew05.c b/drivers/video/display/screen/lcd_b101ew05.c
new file mode 100755 (executable)
index 0000000..f09b91b
--- /dev/null
@@ -0,0 +1,76 @@
+#include <linux/fb.h>\r
+#include <linux/delay.h>\r
+#include "../../rk29_fb.h"\r
+#include <mach/gpio.h>\r
+#include <mach/iomux.h>\r
+#include <mach/board.h>\r
+#include "screen.h"\r
+\r
+\r
+/* Base */\r
+#define OUT_TYPE           SCREEN_RGB\r
+\r
+#define OUT_FACE           OUT_D888_P666\r
+\r
+\r
+#define OUT_CLK                  75000000\r
+#define LCDC_ACLK        800000000           //29 lcdc axi DMA ÆµÂÊ\r
+\r
+/* Timing */\r
+#define H_PW                   10\r
+#define H_BP                   100\r
+#define H_VD                   1280\r
+#define H_FP                   58\r
+\r
+#define V_PW                   2\r
+#define V_BP                   8\r
+#define V_VD                   800\r
+#define V_FP                   6\r
+\r
+#define LCD_WIDTH          216\r
+#define LCD_HEIGHT         135\r
+/* Other */\r
+#define DCLK_POL               0\r
+#define SWAP_RB                0\r
+\r
+\r
+void set_lcd_info(struct rk29fb_screen *screen, struct rk29lcd_info *lcd_info )\r
+{\r
+    /* screen type & face */\r
+    screen->type = OUT_TYPE;\r
+    screen->face = OUT_FACE;\r
+\r
+    /* Screen size */\r
+    screen->x_res = H_VD;\r
+    screen->y_res = V_VD;\r
+\r
+    screen->width = LCD_WIDTH;\r
+    screen->height = LCD_HEIGHT;\r
+\r
+    /* Timing */\r
+    screen->lcdc_aclk = LCDC_ACLK;\r
+    screen->pixclock = OUT_CLK;\r
+       screen->left_margin = H_BP;\r
+       screen->right_margin = H_FP;\r
+       screen->hsync_len = H_PW;\r
+       screen->upper_margin = V_BP;\r
+       screen->lower_margin = V_FP;\r
+       screen->vsync_len = V_PW;\r
+\r
+       /* Pin polarity */\r
+       screen->pin_hsync = 0;\r
+       screen->pin_vsync = 0;\r
+       screen->pin_den = 0;\r
+       screen->pin_dclk = DCLK_POL;\r
+\r
+       /* Swap rule */\r
+    screen->swap_rb = SWAP_RB;\r
+    screen->swap_rg = 0;\r
+    screen->swap_gb = 0;\r
+    screen->swap_delta = 0;\r
+    screen->swap_dumy = 0;\r
+\r
+    /* Operation function*/\r
+    screen->init = NULL;\r
+    screen->standby = NULL;\r
+}\r