diff options
Diffstat (limited to 'include/asm-arm/arch-pxa/pxafb.h')
-rw-r--r-- | include/asm-arm/arch-pxa/pxafb.h | 71 |
1 files changed, 68 insertions, 3 deletions
diff --git a/include/asm-arm/arch-pxa/pxafb.h b/include/asm-arm/arch-pxa/pxafb.h index ea2336aa70e4..bbd22396841a 100644 --- a/include/asm-arm/arch-pxa/pxafb.h +++ b/include/asm-arm/arch-pxa/pxafb.h | |||
@@ -13,6 +13,50 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/fb.h> | 15 | #include <linux/fb.h> |
16 | #include <asm/arch/regs-lcd.h> | ||
17 | |||
18 | /* | ||
19 | * Supported LCD connections | ||
20 | * | ||
21 | * bits 0 - 3: for LCD panel type: | ||
22 | * | ||
23 | * STN - for passive matrix | ||
24 | * DSTN - for dual scan passive matrix | ||
25 | * TFT - for active matrix | ||
26 | * | ||
27 | * bits 4 - 9 : for bus width | ||
28 | * bits 10-17 : for AC Bias Pin Frequency | ||
29 | * bit 18 : for output enable polarity | ||
30 | * bit 19 : for pixel clock edge | ||
31 | */ | ||
32 | #define LCD_CONN_TYPE(_x) ((_x) & 0x0f) | ||
33 | #define LCD_CONN_WIDTH(_x) (((_x) >> 4) & 0x1f) | ||
34 | |||
35 | #define LCD_TYPE_UNKNOWN 0 | ||
36 | #define LCD_TYPE_MONO_STN 1 | ||
37 | #define LCD_TYPE_MONO_DSTN 2 | ||
38 | #define LCD_TYPE_COLOR_STN 3 | ||
39 | #define LCD_TYPE_COLOR_DSTN 4 | ||
40 | #define LCD_TYPE_COLOR_TFT 5 | ||
41 | #define LCD_TYPE_SMART_PANEL 6 | ||
42 | #define LCD_TYPE_MAX 7 | ||
43 | |||
44 | #define LCD_MONO_STN_4BPP ((4 << 4) | LCD_TYPE_MONO_STN) | ||
45 | #define LCD_MONO_STN_8BPP ((8 << 4) | LCD_TYPE_MONO_STN) | ||
46 | #define LCD_MONO_DSTN_8BPP ((8 << 4) | LCD_TYPE_MONO_DSTN) | ||
47 | #define LCD_COLOR_STN_8BPP ((8 << 4) | LCD_TYPE_COLOR_STN) | ||
48 | #define LCD_COLOR_DSTN_16BPP ((16 << 4) | LCD_TYPE_COLOR_DSTN) | ||
49 | #define LCD_COLOR_TFT_16BPP ((16 << 4) | LCD_TYPE_COLOR_TFT) | ||
50 | #define LCD_COLOR_TFT_18BPP ((18 << 4) | LCD_TYPE_COLOR_TFT) | ||
51 | #define LCD_SMART_PANEL_8BPP ((8 << 4) | LCD_TYPE_SMART_PANEL) | ||
52 | #define LCD_SMART_PANEL_16BPP ((16 << 4) | LCD_TYPE_SMART_PANEL) | ||
53 | #define LCD_SMART_PANEL_18BPP ((18 << 4) | LCD_TYPE_SMART_PANEL) | ||
54 | |||
55 | #define LCD_AC_BIAS_FREQ(x) (((x) & 0xff) << 10) | ||
56 | #define LCD_BIAS_ACTIVE_HIGH (0 << 17) | ||
57 | #define LCD_BIAS_ACTIVE_LOW (1 << 17) | ||
58 | #define LCD_PCLK_EDGE_RISE (0 << 18) | ||
59 | #define LCD_PCLK_EDGE_FALL (1 << 18) | ||
16 | 60 | ||
17 | /* | 61 | /* |
18 | * This structure describes the machine which we are running on. | 62 | * This structure describes the machine which we are running on. |
@@ -26,6 +70,10 @@ struct pxafb_mode_info { | |||
26 | u_short yres; | 70 | u_short yres; |
27 | 71 | ||
28 | u_char bpp; | 72 | u_char bpp; |
73 | u_int cmap_greyscale:1, | ||
74 | unused:31; | ||
75 | |||
76 | /* Parallel Mode Timing */ | ||
29 | u_char hsync_len; | 77 | u_char hsync_len; |
30 | u_char left_margin; | 78 | u_char left_margin; |
31 | u_char right_margin; | 79 | u_char right_margin; |
@@ -35,14 +83,28 @@ struct pxafb_mode_info { | |||
35 | u_char lower_margin; | 83 | u_char lower_margin; |
36 | u_char sync; | 84 | u_char sync; |
37 | 85 | ||
38 | u_int cmap_greyscale:1, | 86 | /* Smart Panel Mode Timing - see PXA27x DM 7.4.15.0.3 for details |
39 | unused:31; | 87 | * Note: |
88 | * 1. all parameters in nanosecond (ns) | ||
89 | * 2. a0cs{rd,wr}_set_hld are controlled by the same register bits | ||
90 | * in pxa27x and pxa3xx, initialize them to the same value or | ||
91 | * the larger one will be used | ||
92 | * 3. same to {rd,wr}_pulse_width | ||
93 | */ | ||
94 | unsigned a0csrd_set_hld; /* A0 and CS Setup/Hold Time before/after L_FCLK_RD */ | ||
95 | unsigned a0cswr_set_hld; /* A0 and CS Setup/Hold Time before/after L_PCLK_WR */ | ||
96 | unsigned wr_pulse_width; /* L_PCLK_WR pulse width */ | ||
97 | unsigned rd_pulse_width; /* L_FCLK_RD pulse width */ | ||
98 | unsigned cmd_inh_time; /* Command Inhibit time between two writes */ | ||
99 | unsigned op_hold_time; /* Output Hold time from L_FCLK_RD negation */ | ||
40 | }; | 100 | }; |
41 | 101 | ||
42 | struct pxafb_mach_info { | 102 | struct pxafb_mach_info { |
43 | struct pxafb_mode_info *modes; | 103 | struct pxafb_mode_info *modes; |
44 | unsigned int num_modes; | 104 | unsigned int num_modes; |
45 | 105 | ||
106 | unsigned int lcd_conn; | ||
107 | |||
46 | u_int fixed_modes:1, | 108 | u_int fixed_modes:1, |
47 | cmap_inverse:1, | 109 | cmap_inverse:1, |
48 | cmap_static:1, | 110 | cmap_static:1, |
@@ -78,8 +140,11 @@ struct pxafb_mach_info { | |||
78 | u_int lccr4; | 140 | u_int lccr4; |
79 | void (*pxafb_backlight_power)(int); | 141 | void (*pxafb_backlight_power)(int); |
80 | void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *); | 142 | void (*pxafb_lcd_power)(int, struct fb_var_screeninfo *); |
81 | 143 | void (*smart_update)(struct fb_info *); | |
82 | }; | 144 | }; |
83 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); | 145 | void set_pxa_fb_info(struct pxafb_mach_info *hard_pxa_fb_info); |
84 | void set_pxa_fb_parent(struct device *parent_dev); | 146 | void set_pxa_fb_parent(struct device *parent_dev); |
85 | unsigned long pxafb_get_hsync_time(struct device *dev); | 147 | unsigned long pxafb_get_hsync_time(struct device *dev); |
148 | |||
149 | extern int pxafb_smart_queue(struct fb_info *info, uint16_t *cmds, int); | ||
150 | extern int pxafb_smart_flush(struct fb_info *info); | ||