Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
w100fb.h
Go to the documentation of this file.
1 /*
2  * Support for the w100 frame buffer.
3  *
4  * Copyright (c) 2004-2005 Richard Purdie
5  * Copyright (c) 2005 Ian Molton
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License version 2 as
9  * published by the Free Software Foundation.
10  */
11 
12 #define W100_GPIO_PORT_A 0
13 #define W100_GPIO_PORT_B 1
14 
15 #define CLK_SRC_XTAL 0
16 #define CLK_SRC_PLL 1
17 
18 struct w100fb_par;
19 
20 unsigned long w100fb_gpio_read(int port);
21 void w100fb_gpio_write(int port, unsigned long value);
22 unsigned long w100fb_get_hsynclen(struct device *dev);
23 
24 /* LCD Specific Routines and Config */
25 struct w100_tg_info {
26  void (*change)(struct w100fb_par*);
27  void (*suspend)(struct w100fb_par*);
28  void (*resume)(struct w100fb_par*);
29 };
30 
31 /* General Platform Specific w100 Register Values */
32 struct w100_gen_regs {
33  unsigned long lcd_format;
34  unsigned long lcdd_cntl1;
35  unsigned long lcdd_cntl2;
36  unsigned long genlcd_cntl1;
37  unsigned long genlcd_cntl2;
38  unsigned long genlcd_cntl3;
39 };
40 
42  unsigned long init_data1;
43  unsigned long init_data2;
44  unsigned long gpio_dir1;
45  unsigned long gpio_oe1;
46  unsigned long gpio_dir2;
47  unsigned long gpio_oe2;
48 };
49 
50 /* Optional External Memory Configuration */
51 struct w100_mem_info {
52  unsigned long ext_cntl;
53  unsigned long sdram_mode_reg;
54  unsigned long ext_timing_cntl;
55  unsigned long io_cntl;
56  unsigned int size;
57 };
58 
60  unsigned long ext_mem_bw;
61  unsigned long offset;
62  unsigned long ext_timing_ctl;
63  unsigned long ext_cntl;
64  unsigned long mode_reg;
65  unsigned long io_cntl;
66  unsigned long config;
67 };
68 
69 /* LCD Mode definition */
70 struct w100_mode {
71  unsigned int xres;
72  unsigned int yres;
73  unsigned short left_margin;
74  unsigned short right_margin;
75  unsigned short upper_margin;
76  unsigned short lower_margin;
77  unsigned long crtc_ss;
78  unsigned long crtc_ls;
79  unsigned long crtc_gs;
80  unsigned long crtc_vpos_gs;
81  unsigned long crtc_rev;
82  unsigned long crtc_dclk;
83  unsigned long crtc_gclk;
84  unsigned long crtc_goe;
85  unsigned long crtc_ps1_active;
86  char pll_freq;
93 };
94 
95 struct w100_pll_info {
96  uint16_t freq; /* desired Fout for PLL (Mhz) */
97  uint8_t M; /* input divider */
98  uint8_t N_int; /* VCO multiplier */
99  uint8_t N_fac; /* VCO multiplier fractional part */
102 };
103 
104 /* Initial Video mode orientation flags */
105 #define INIT_MODE_ROTATED 0x1
106 #define INIT_MODE_FLIPPED 0x2
107 
108 /*
109  * This structure describes the machine which we are running on.
110  * It is set by machine specific code and used in the probe routine
111  * of drivers/video/w100fb.c
112  */
114  /* General Platform Specific Registers */
116  /* Table of modes the LCD is capable of */
118  unsigned int num_modes;
119  /* Hooks for any platform specific tg/lcd code (optional) */
120  struct w100_tg_info *tg;
121  /* External memory definition (if present) */
123  /* Additional External memory definition (if present) */
125  /* GPIO definitions (optional) */
127  /* Initial Mode flags */
128  unsigned int init_mode;
129  /* Xtal Frequency */
130  unsigned int xtal_freq;
131  /* Enable Xtal input doubler (1 == enable) */
132  unsigned int xtal_dbl;
133 };
134 
135 /* General frame buffer data structure */
136 struct w100fb_par {
137  unsigned int chip_id;
138  unsigned int xres;
139  unsigned int yres;
140  unsigned int extmem_active;
141  unsigned int flip;
142  unsigned int blanked;
143  unsigned int fastpll_mode;
144  unsigned long hsync_len;
145  struct w100_mode *mode;
150 };