support hdmi for default panel
authorzyw <zyw@rock-chips.com>
Fri, 24 Dec 2010 05:16:39 +0000 (13:16 +0800)
committerzyw <zyw@rock-chips.com>
Fri, 24 Dec 2010 05:16:39 +0000 (13:16 +0800)
drivers/video/display/screen/Kconfig
drivers/video/display/screen/Makefile
drivers/video/display/screen/lcd_anx7150_720p.c [new file with mode: 0644]
drivers/video/hdmi/hdmi-fb.c [changed mode: 0755->0644]
drivers/video/rk29_fb.c

index 90e4594fde65737f709af8e2c0701d9c717f0dab..6de4a8beda7c6d19bc980f093b239173921b2edf 100755 (executable)
@@ -23,20 +23,10 @@ config LCD_NT35582
        bool "MCU NT35582"
 config LCD_NT35580
        bool "MCU NT35580"
+config LCD_ANX7150_720P
+       bool "anx7150 720p for default panel"
+       ---help---
+       if you want set anx7150(720p 50hz) for default panel, android UI size is 1280x720.
 endchoice
 
-choice
-    depends on DISPLAY_SUPPORT
-       prompt  "TVOUT Chip Select"
-config TV_NULL
-       bool "NULL"
-endchoice
 
-choice
-    depends on DISPLAY_SUPPORT
-       prompt  "HDMI Chip Select"
-config HDMI_NULL
-       bool "NULL"
-config HDMI_ANX7150
-       bool "HDMI ANX7150"
-endchoice
index 4944ea1973593c2619d676d6ca2b669389ede087..a9e8fdf4f238340ae694b4bc53d421aaff717850 100755 (executable)
@@ -18,5 +18,5 @@ obj-$(CONFIG_HDMI_ANX7150) += hdmi_anx7150.o
 
 obj-$(CONFIG_LCD_HX8357) += lcd_hx8357.o
 obj-$(CONFIG_LCD_HSD100PXN) += lcd_hsd100pxn.o
-
+obj-$(CONFIG_LCD_ANX7150_720P) += lcd_anx7150_720p.o
 
diff --git a/drivers/video/display/screen/lcd_anx7150_720p.c b/drivers/video/display/screen/lcd_anx7150_720p.c
new file mode 100644 (file)
index 0000000..5464c10
--- /dev/null
@@ -0,0 +1,72 @@
+#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
+#define OUT_TYPE               SCREEN_HDMI\r
+#define OUT_FACE               OUT_P888\r
+#define LCDC_ACLK        312000000\r
+\r
+#define OUT_CLK            74250000\r
+#define H_PW                   40\r
+#define H_BP                   220\r
+#define H_VD                   1280\r
+#define H_FP                   440\r
+#define V_PW                   5\r
+#define V_BP                   20\r
+#define V_VD                   720\r
+#define V_FP                   5\r
+\r
+#define LCD_WIDTH       1280\r
+#define LCD_HEIGHT      720\r
+/* Other */\r
+#define DCLK_POL               1\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
+\r
+\r
+\r
old mode 100755 (executable)
new mode 100644 (file)
index c937dc7..1eb2e30
@@ -9,7 +9,7 @@
 /* Base */
 #define LCD_ACLK               312000000
 
-#define OUT_TYPE               SCREEN_RGB
+#define OUT_TYPE               SCREEN_HDMI
 #define OUT_FACE               OUT_P888
 #define DCLK_POL               1
 #define SWAP_RB                        0
index d11bbdb0b1ee9b54dcdb49e64f51ff85a8ecf2c0..26c12fd332e14d67bd0a10383e2f028357999f9d 100755 (executable)
@@ -579,11 +579,11 @@ void load_screen(struct fb_info *info, bool initscreen)
                return ;
     }
 
-    if(inf->cur_screen == &inf->panel1_info)    {
-        inf->dclk_parent = clk_get(NULL, "general_pll");
-    }    else    {
+    if((inf->cur_screen->type == SCREEN_HDMI) || (inf->cur_screen->type == SCREEN_TVOUT)){
         inf->dclk_parent = clk_get(NULL, "codec_pll");
                clk_set_rate(inf->dclk_parent, 297000000);
+    }    else    {
+        inf->dclk_parent = clk_get(NULL, "general_pll");
     }
 
     if (IS_ERR(inf->dclk_parent))