rk2928 add phonepad support
[firefly-linux-kernel-4.4.55.git] / drivers / video / display / screen / lcd_wy_800x480.c
1 #include <linux/fb.h>
2 #include <linux/delay.h>
3 #include "../../rk29_fb.h"
4 #include <mach/gpio.h>
5 #include <mach/iomux.h>
6 #include <mach/board.h>
7 #include "screen.h"
8
9 /* Base */
10 #define LCD_WIDTH       154    //need modify
11 #define LCD_HEIGHT      85
12
13 #define OUT_TYPE                SCREEN_RGB
14 #define OUT_FACE                OUT_P666
15 #define OUT_CLK                  33000000
16 #define LCDC_ACLK       150000000     //29 lcdc axi DMA ÆµÂÊ
17
18 /* Timing */
19 #define H_PW                    30
20 #define H_BP                    16
21 #define H_VD                    800
22 #define H_FP                    210
23
24 #define V_PW                    13
25 #define V_BP                    10
26 #define V_VD                    480
27 #define V_FP                    22
28
29 /* Other */
30 #define DCLK_POL        0       
31 #define SWAP_RB         0       
32
33 static struct rk29lcd_info *gLcd_info = NULL;
34
35 static int init(void)
36 {
37         int ret = 0;
38         
39         if(gLcd_info && gLcd_info->io_init)
40                 gLcd_info->io_init();
41
42         return 0;
43 }
44
45 static int standby(u8 enable)
46 {
47         if(!enable)
48         {
49                 if(gLcd_info && gLcd_info->io_enable)
50                         gLcd_info->io_enable();
51         }
52         else 
53         {
54                 if(gLcd_info && gLcd_info->io_disable)
55                         gLcd_info->io_disable();
56         }
57         return 0;
58 }
59
60 void set_lcd_info(struct rk29fb_screen *screen,  struct rk29lcd_info *lcd_info )
61 {
62     /* screen type & face */
63     screen->type = OUT_TYPE;
64     screen->face = OUT_FACE;
65
66     /* Screen size */
67     screen->x_res = H_VD;
68     screen->y_res = V_VD;
69
70     screen->width = LCD_WIDTH;
71     screen->height = LCD_HEIGHT;
72
73     /* Timing */
74     screen->lcdc_aclk = LCDC_ACLK;
75     screen->pixclock = OUT_CLK;
76         screen->left_margin = H_BP;
77         screen->right_margin = H_FP;
78         screen->hsync_len = H_PW;
79         screen->upper_margin = V_BP;
80         screen->lower_margin = V_FP;
81         screen->vsync_len = V_PW;
82
83         /* Pin polarity */
84         screen->pin_hsync = 0;
85         screen->pin_vsync = 0;
86         screen->pin_den = 0;
87         screen->pin_dclk = DCLK_POL;
88
89         /* Swap rule */
90     screen->swap_rb = SWAP_RB;
91     screen->swap_rg = 0;
92     screen->swap_gb = 0;
93     screen->swap_delta = 0;
94     screen->swap_dumy = 0;
95
96         /* Operation function*/
97         screen->init = init;
98         screen->standby = standby;
99         if(lcd_info)
100         {
101                 gLcd_info = lcd_info;
102         }
103         else
104         {
105                 printk("%s lcd_info==NULL\n", __func__);
106         }
107
108 }
109