xref: /openbmc/linux/drivers/video/fbdev/intelfb/intelfb.h (revision 8dd06ef34b6e2f41b29fbf5fc1663780f2524285)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2f7018c21STomi Valkeinen #ifndef _INTELFB_H
3f7018c21STomi Valkeinen #define _INTELFB_H
4f7018c21STomi Valkeinen 
5f7018c21STomi Valkeinen /* $DHD: intelfb/intelfb.h,v 1.40 2003/06/27 15:06:25 dawes Exp $ */
6f7018c21STomi Valkeinen 
7f7018c21STomi Valkeinen #include <linux/agp_backend.h>
8f7018c21STomi Valkeinen #include <linux/fb.h>
9f7018c21STomi Valkeinen 
10f7018c21STomi Valkeinen #ifdef CONFIG_FB_INTEL_I2C
11f7018c21STomi Valkeinen #include <linux/i2c.h>
12f7018c21STomi Valkeinen #include <linux/i2c-algo-bit.h>
13f7018c21STomi Valkeinen #endif
14f7018c21STomi Valkeinen 
15f7018c21STomi Valkeinen /*** Version/name ***/
16f7018c21STomi Valkeinen #define INTELFB_VERSION			"0.9.6"
17f7018c21STomi Valkeinen #define INTELFB_MODULE_NAME		"intelfb"
18f7018c21STomi Valkeinen #define SUPPORTED_CHIPSETS		"830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/945GME/965G/965GM"
19f7018c21STomi Valkeinen 
20f7018c21STomi Valkeinen 
21f7018c21STomi Valkeinen /*** Debug/feature defines ***/
22f7018c21STomi Valkeinen 
23f7018c21STomi Valkeinen #ifndef DEBUG
24f7018c21STomi Valkeinen #define DEBUG				0
25f7018c21STomi Valkeinen #endif
26f7018c21STomi Valkeinen 
27f7018c21STomi Valkeinen #ifndef VERBOSE
28f7018c21STomi Valkeinen #define VERBOSE				0
29f7018c21STomi Valkeinen #endif
30f7018c21STomi Valkeinen 
31f7018c21STomi Valkeinen #ifndef REGDUMP
32f7018c21STomi Valkeinen #define REGDUMP				0
33f7018c21STomi Valkeinen #endif
34f7018c21STomi Valkeinen 
35f7018c21STomi Valkeinen #ifndef DETECT_VGA_CLASS_ONLY
36f7018c21STomi Valkeinen #define DETECT_VGA_CLASS_ONLY		1
37f7018c21STomi Valkeinen #endif
38f7018c21STomi Valkeinen 
39f7018c21STomi Valkeinen #ifndef ALLOCATE_FOR_PANNING
40f7018c21STomi Valkeinen #define ALLOCATE_FOR_PANNING		1
41f7018c21STomi Valkeinen #endif
42f7018c21STomi Valkeinen 
43f7018c21STomi Valkeinen #ifndef PREFERRED_MODE
44f7018c21STomi Valkeinen #define PREFERRED_MODE			"1024x768-32@70"
45f7018c21STomi Valkeinen #endif
46f7018c21STomi Valkeinen 
47f7018c21STomi Valkeinen /*** hw-related values ***/
48f7018c21STomi Valkeinen 
49f7018c21STomi Valkeinen /* Resource Allocation */
50f7018c21STomi Valkeinen #define INTELFB_FB_ACQUIRED                 1
51f7018c21STomi Valkeinen #define INTELFB_MMIO_ACQUIRED               2
52f7018c21STomi Valkeinen 
53f7018c21STomi Valkeinen /* PCI ids for supported devices */
54f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_830M	0x3577
55f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_845G	0x2562
56f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_85XGM	0x3582
57f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_854		0x358E
58f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_865G	0x2572
59f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_915G	0x2582
60f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_915GM	0x2592
61f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_945G	0x2772
62f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_945GM	0x27A2
63f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_945GME	0x27AE
64f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_965G	0x29A2
65f7018c21STomi Valkeinen #define PCI_DEVICE_ID_INTEL_965GM	0x2A02
66f7018c21STomi Valkeinen 
67f7018c21STomi Valkeinen /* Size of MMIO region */
68f7018c21STomi Valkeinen #define INTEL_REG_SIZE			0x80000
69f7018c21STomi Valkeinen 
70f7018c21STomi Valkeinen #define STRIDE_ALIGNMENT		16
71f7018c21STomi Valkeinen #define STRIDE_ALIGNMENT_I9XX		64
72f7018c21STomi Valkeinen 
73f7018c21STomi Valkeinen #define PALETTE_8_ENTRIES		256
74f7018c21STomi Valkeinen 
75f7018c21STomi Valkeinen 
76f7018c21STomi Valkeinen /*** Macros ***/
77f7018c21STomi Valkeinen 
78f7018c21STomi Valkeinen /* basic arithmetic */
79f7018c21STomi Valkeinen #define KB(x)			((x) * 1024)
80f7018c21STomi Valkeinen #define MB(x)			((x) * 1024 * 1024)
81f7018c21STomi Valkeinen #define BtoKB(x)		((x) / 1024)
82f7018c21STomi Valkeinen #define BtoMB(x)		((x) / 1024 / 1024)
83f7018c21STomi Valkeinen 
84f7018c21STomi Valkeinen #define GTT_PAGE_SIZE           KB(4)
85f7018c21STomi Valkeinen 
86f7018c21STomi Valkeinen #define ROUND_UP_TO(x, y)	(((x) + (y) - 1) / (y) * (y))
87f7018c21STomi Valkeinen #define ROUND_DOWN_TO(x, y)	((x) / (y) * (y))
88f7018c21STomi Valkeinen #define ROUND_UP_TO_PAGE(x)	ROUND_UP_TO((x), GTT_PAGE_SIZE)
89f7018c21STomi Valkeinen #define ROUND_DOWN_TO_PAGE(x)	ROUND_DOWN_TO((x), GTT_PAGE_SIZE)
90f7018c21STomi Valkeinen 
91f7018c21STomi Valkeinen /* messages */
92f7018c21STomi Valkeinen #define PFX			INTELFB_MODULE_NAME ": "
93f7018c21STomi Valkeinen 
94f7018c21STomi Valkeinen #define ERR_MSG(fmt, args...)	printk(KERN_ERR PFX fmt, ## args)
95f7018c21STomi Valkeinen #define WRN_MSG(fmt, args...)	printk(KERN_WARNING PFX fmt, ## args)
96f7018c21STomi Valkeinen #define NOT_MSG(fmt, args...)	printk(KERN_NOTICE PFX fmt, ## args)
97f7018c21STomi Valkeinen #define INF_MSG(fmt, args...)	printk(KERN_INFO PFX fmt, ## args)
98f7018c21STomi Valkeinen #if DEBUG
99f7018c21STomi Valkeinen #define DBG_MSG(fmt, args...)	printk(KERN_DEBUG PFX fmt, ## args)
100f7018c21STomi Valkeinen #else
101f7018c21STomi Valkeinen #define DBG_MSG(fmt, args...)	while (0) printk(fmt, ## args)
102f7018c21STomi Valkeinen #endif
103f7018c21STomi Valkeinen 
104f7018c21STomi Valkeinen /* get commonly used pointers */
105f7018c21STomi Valkeinen #define GET_DINFO(info)		(info)->par
106f7018c21STomi Valkeinen 
107f7018c21STomi Valkeinen /* misc macros */
108f7018c21STomi Valkeinen #define ACCEL(d, i)                                                     \
109f7018c21STomi Valkeinen 	((d)->accel && !(d)->ring_lockup &&                             \
110f7018c21STomi Valkeinen 	 ((i)->var.accel_flags & FB_ACCELF_TEXT))
111f7018c21STomi Valkeinen 
112f7018c21STomi Valkeinen /*#define NOACCEL_CHIPSET(d)						\
113f7018c21STomi Valkeinen 	((d)->chipset != INTEL_865G)*/
114f7018c21STomi Valkeinen #define NOACCEL_CHIPSET(d)						\
115f7018c21STomi Valkeinen 	(0)
116f7018c21STomi Valkeinen 
117f7018c21STomi Valkeinen #define FIXED_MODE(d) ((d)->fixed_mode)
118f7018c21STomi Valkeinen 
119f7018c21STomi Valkeinen /*** Driver parameters ***/
120f7018c21STomi Valkeinen 
121f7018c21STomi Valkeinen #define RINGBUFFER_SIZE		KB(64)
122f7018c21STomi Valkeinen #define HW_CURSOR_SIZE		KB(4)
123f7018c21STomi Valkeinen 
124f7018c21STomi Valkeinen /* Intel agpgart driver */
125f7018c21STomi Valkeinen #define AGP_PHYSICAL_MEMORY     2
126f7018c21STomi Valkeinen 
127f7018c21STomi Valkeinen /* store information about an Ixxx DVO */
128f7018c21STomi Valkeinen /* The i830->i865 use multiple DVOs with multiple i2cs */
129f7018c21STomi Valkeinen /* the i915, i945 have a single sDVO i2c bus - which is different */
130f7018c21STomi Valkeinen #define MAX_OUTPUTS 6
131f7018c21STomi Valkeinen 
132f7018c21STomi Valkeinen /* these are outputs from the chip - integrated only
133f7018c21STomi Valkeinen    external chips are via DVO or SDVO output */
134f7018c21STomi Valkeinen #define INTELFB_OUTPUT_UNUSED 0
135f7018c21STomi Valkeinen #define INTELFB_OUTPUT_ANALOG 1
136f7018c21STomi Valkeinen #define INTELFB_OUTPUT_DVO 2
137f7018c21STomi Valkeinen #define INTELFB_OUTPUT_SDVO 3
138f7018c21STomi Valkeinen #define INTELFB_OUTPUT_LVDS 4
139f7018c21STomi Valkeinen #define INTELFB_OUTPUT_TVOUT 5
140f7018c21STomi Valkeinen 
141f7018c21STomi Valkeinen #define INTELFB_DVO_CHIP_NONE 0
142f7018c21STomi Valkeinen #define INTELFB_DVO_CHIP_LVDS 1
143f7018c21STomi Valkeinen #define INTELFB_DVO_CHIP_TMDS 2
144f7018c21STomi Valkeinen #define INTELFB_DVO_CHIP_TVOUT 4
145f7018c21STomi Valkeinen 
146f7018c21STomi Valkeinen #define INTELFB_OUTPUT_PIPE_NC  0
147f7018c21STomi Valkeinen #define INTELFB_OUTPUT_PIPE_A   1
148f7018c21STomi Valkeinen #define INTELFB_OUTPUT_PIPE_B   2
149f7018c21STomi Valkeinen 
150f7018c21STomi Valkeinen /*** Data Types ***/
151f7018c21STomi Valkeinen 
152f7018c21STomi Valkeinen /* supported chipsets */
153f7018c21STomi Valkeinen enum intel_chips {
154f7018c21STomi Valkeinen 	INTEL_830M,
155f7018c21STomi Valkeinen 	INTEL_845G,
156f7018c21STomi Valkeinen 	INTEL_85XGM,
157f7018c21STomi Valkeinen 	INTEL_852GM,
158f7018c21STomi Valkeinen 	INTEL_852GME,
159f7018c21STomi Valkeinen 	INTEL_854,
160f7018c21STomi Valkeinen 	INTEL_855GM,
161f7018c21STomi Valkeinen 	INTEL_855GME,
162f7018c21STomi Valkeinen 	INTEL_865G,
163f7018c21STomi Valkeinen 	INTEL_915G,
164f7018c21STomi Valkeinen 	INTEL_915GM,
165f7018c21STomi Valkeinen 	INTEL_945G,
166f7018c21STomi Valkeinen 	INTEL_945GM,
167f7018c21STomi Valkeinen 	INTEL_945GME,
168f7018c21STomi Valkeinen 	INTEL_965G,
169f7018c21STomi Valkeinen 	INTEL_965GM,
170f7018c21STomi Valkeinen };
171f7018c21STomi Valkeinen 
172f7018c21STomi Valkeinen struct intelfb_hwstate {
173f7018c21STomi Valkeinen 	u32 vga0_divisor;
174f7018c21STomi Valkeinen 	u32 vga1_divisor;
175f7018c21STomi Valkeinen 	u32 vga_pd;
176f7018c21STomi Valkeinen 	u32 dpll_a;
177f7018c21STomi Valkeinen 	u32 dpll_b;
178f7018c21STomi Valkeinen 	u32 fpa0;
179f7018c21STomi Valkeinen 	u32 fpa1;
180f7018c21STomi Valkeinen 	u32 fpb0;
181f7018c21STomi Valkeinen 	u32 fpb1;
182f7018c21STomi Valkeinen 	u32 palette_a[PALETTE_8_ENTRIES];
183f7018c21STomi Valkeinen 	u32 palette_b[PALETTE_8_ENTRIES];
184f7018c21STomi Valkeinen 	u32 htotal_a;
185f7018c21STomi Valkeinen 	u32 hblank_a;
186f7018c21STomi Valkeinen 	u32 hsync_a;
187f7018c21STomi Valkeinen 	u32 vtotal_a;
188f7018c21STomi Valkeinen 	u32 vblank_a;
189f7018c21STomi Valkeinen 	u32 vsync_a;
190f7018c21STomi Valkeinen 	u32 src_size_a;
191f7018c21STomi Valkeinen 	u32 bclrpat_a;
192f7018c21STomi Valkeinen 	u32 htotal_b;
193f7018c21STomi Valkeinen 	u32 hblank_b;
194f7018c21STomi Valkeinen 	u32 hsync_b;
195f7018c21STomi Valkeinen 	u32 vtotal_b;
196f7018c21STomi Valkeinen 	u32 vblank_b;
197f7018c21STomi Valkeinen 	u32 vsync_b;
198f7018c21STomi Valkeinen 	u32 src_size_b;
199f7018c21STomi Valkeinen 	u32 bclrpat_b;
200f7018c21STomi Valkeinen 	u32 adpa;
201f7018c21STomi Valkeinen 	u32 dvoa;
202f7018c21STomi Valkeinen 	u32 dvob;
203f7018c21STomi Valkeinen 	u32 dvoc;
204f7018c21STomi Valkeinen 	u32 dvoa_srcdim;
205f7018c21STomi Valkeinen 	u32 dvob_srcdim;
206f7018c21STomi Valkeinen 	u32 dvoc_srcdim;
207f7018c21STomi Valkeinen 	u32 lvds;
208f7018c21STomi Valkeinen 	u32 pipe_a_conf;
209f7018c21STomi Valkeinen 	u32 pipe_b_conf;
210f7018c21STomi Valkeinen 	u32 disp_arb;
211f7018c21STomi Valkeinen 	u32 cursor_a_control;
212f7018c21STomi Valkeinen 	u32 cursor_b_control;
213f7018c21STomi Valkeinen 	u32 cursor_a_base;
214f7018c21STomi Valkeinen 	u32 cursor_b_base;
215f7018c21STomi Valkeinen 	u32 cursor_size;
216f7018c21STomi Valkeinen 	u32 disp_a_ctrl;
217f7018c21STomi Valkeinen 	u32 disp_b_ctrl;
218f7018c21STomi Valkeinen 	u32 disp_a_base;
219f7018c21STomi Valkeinen 	u32 disp_b_base;
220f7018c21STomi Valkeinen 	u32 cursor_a_palette[4];
221f7018c21STomi Valkeinen 	u32 cursor_b_palette[4];
222f7018c21STomi Valkeinen 	u32 disp_a_stride;
223f7018c21STomi Valkeinen 	u32 disp_b_stride;
224f7018c21STomi Valkeinen 	u32 vgacntrl;
225f7018c21STomi Valkeinen 	u32 add_id;
226f7018c21STomi Valkeinen 	u32 swf0x[7];
227f7018c21STomi Valkeinen 	u32 swf1x[7];
228f7018c21STomi Valkeinen 	u32 swf3x[3];
229f7018c21STomi Valkeinen 	u32 fence[8];
230f7018c21STomi Valkeinen 	u32 instpm;
231f7018c21STomi Valkeinen 	u32 mem_mode;
232f7018c21STomi Valkeinen 	u32 fw_blc_0;
233f7018c21STomi Valkeinen 	u32 fw_blc_1;
234f7018c21STomi Valkeinen 	u16 hwstam;
235f7018c21STomi Valkeinen 	u16 ier;
236f7018c21STomi Valkeinen 	u16 iir;
237f7018c21STomi Valkeinen 	u16 imr;
238f7018c21STomi Valkeinen };
239f7018c21STomi Valkeinen 
240f7018c21STomi Valkeinen struct intelfb_heap_data {
241f7018c21STomi Valkeinen 	u32 physical;
242f7018c21STomi Valkeinen 	u8 __iomem *virtual;
243f7018c21STomi Valkeinen 	u32 offset;		/* in GATT pages */
244f7018c21STomi Valkeinen 	u32 size;		/* in bytes */
245f7018c21STomi Valkeinen };
246f7018c21STomi Valkeinen 
247f7018c21STomi Valkeinen #ifdef CONFIG_FB_INTEL_I2C
248f7018c21STomi Valkeinen struct intelfb_i2c_chan {
249f7018c21STomi Valkeinen     struct intelfb_info *dinfo;
250f7018c21STomi Valkeinen     u32 reg;
251f7018c21STomi Valkeinen     struct i2c_adapter adapter;
252f7018c21STomi Valkeinen     struct i2c_algo_bit_data algo;
253f7018c21STomi Valkeinen };
254f7018c21STomi Valkeinen #endif
255f7018c21STomi Valkeinen 
256f7018c21STomi Valkeinen struct intelfb_output_rec {
257f7018c21STomi Valkeinen     int type;
258f7018c21STomi Valkeinen     int pipe;
259f7018c21STomi Valkeinen     int flags;
260f7018c21STomi Valkeinen 
261f7018c21STomi Valkeinen #ifdef CONFIG_FB_INTEL_I2C
262f7018c21STomi Valkeinen     struct intelfb_i2c_chan i2c_bus;
263f7018c21STomi Valkeinen     struct intelfb_i2c_chan ddc_bus;
264f7018c21STomi Valkeinen #endif
265f7018c21STomi Valkeinen };
266f7018c21STomi Valkeinen 
267f7018c21STomi Valkeinen struct intelfb_vsync {
268f7018c21STomi Valkeinen 	wait_queue_head_t wait;
269f7018c21STomi Valkeinen 	unsigned int count;
270f7018c21STomi Valkeinen 	int pan_display;
271f7018c21STomi Valkeinen 	u32 pan_offset;
272f7018c21STomi Valkeinen };
273f7018c21STomi Valkeinen 
274f7018c21STomi Valkeinen struct intelfb_info {
275f7018c21STomi Valkeinen 	struct fb_info *info;
276*28318ac1SJani Nikula 	const struct fb_ops *fbops;
277f7018c21STomi Valkeinen 	struct pci_dev *pdev;
278f7018c21STomi Valkeinen 
279f7018c21STomi Valkeinen 	struct intelfb_hwstate save_state;
280f7018c21STomi Valkeinen 
281f7018c21STomi Valkeinen 	/* agpgart structs */
282f7018c21STomi Valkeinen 	struct agp_memory *gtt_fb_mem;     /* use all stolen memory or vram */
283f7018c21STomi Valkeinen 	struct agp_memory *gtt_ring_mem;   /* ring buffer */
284f7018c21STomi Valkeinen 	struct agp_memory *gtt_cursor_mem; /* hw cursor */
285f7018c21STomi Valkeinen 
286f7018c21STomi Valkeinen 	/* use a gart reserved fb mem */
287f7018c21STomi Valkeinen 	u8 fbmem_gart;
288f7018c21STomi Valkeinen 
28978084dcfSLuis R. Rodriguez 	int wc_cookie;
290f7018c21STomi Valkeinen 
291f7018c21STomi Valkeinen 	/* heap data */
292f7018c21STomi Valkeinen 	struct intelfb_heap_data aperture;
293f7018c21STomi Valkeinen 	struct intelfb_heap_data fb;
294f7018c21STomi Valkeinen 	struct intelfb_heap_data ring;
295f7018c21STomi Valkeinen 	struct intelfb_heap_data cursor;
296f7018c21STomi Valkeinen 
297f7018c21STomi Valkeinen 	/* mmio regs */
298f7018c21STomi Valkeinen 	u32 mmio_base_phys;
299f7018c21STomi Valkeinen 	u8 __iomem *mmio_base;
300f7018c21STomi Valkeinen 
301f7018c21STomi Valkeinen 	/* fb start offset (in bytes) */
302f7018c21STomi Valkeinen 	u32 fb_start;
303f7018c21STomi Valkeinen 
304f7018c21STomi Valkeinen 	/* ring buffer */
305f7018c21STomi Valkeinen 	u32 ring_head;
306f7018c21STomi Valkeinen 	u32 ring_tail;
307f7018c21STomi Valkeinen 	u32 ring_tail_mask;
308f7018c21STomi Valkeinen 	u32 ring_space;
309f7018c21STomi Valkeinen 	u32 ring_lockup;
310f7018c21STomi Valkeinen 
311f7018c21STomi Valkeinen 	/* palette */
312f7018c21STomi Valkeinen 	u32 pseudo_palette[16];
313f7018c21STomi Valkeinen 
314f7018c21STomi Valkeinen 	/* chip info */
315f7018c21STomi Valkeinen 	int pci_chipset;
316f7018c21STomi Valkeinen 	int chipset;
317f7018c21STomi Valkeinen 	const char *name;
318f7018c21STomi Valkeinen 	int mobile;
319f7018c21STomi Valkeinen 
320f7018c21STomi Valkeinen 	/* current mode */
321f7018c21STomi Valkeinen 	int bpp, depth;
322f7018c21STomi Valkeinen 	u32 visual;
323f7018c21STomi Valkeinen 	int xres, yres, pitch;
324f7018c21STomi Valkeinen 	int pixclock;
325f7018c21STomi Valkeinen 
326f7018c21STomi Valkeinen 	/* current pipe */
327f7018c21STomi Valkeinen 	int pipe;
328f7018c21STomi Valkeinen 
329f7018c21STomi Valkeinen 	/* some flags */
330f7018c21STomi Valkeinen 	int accel;
331f7018c21STomi Valkeinen 	int hwcursor;
332f7018c21STomi Valkeinen 	int fixed_mode;
333f7018c21STomi Valkeinen 	int ring_active;
334f7018c21STomi Valkeinen 	int flag;
335f7018c21STomi Valkeinen 	unsigned long irq_flags;
336f7018c21STomi Valkeinen 	int open;
337f7018c21STomi Valkeinen 
338f7018c21STomi Valkeinen 	/* vsync */
339f7018c21STomi Valkeinen 	struct intelfb_vsync vsync;
340f7018c21STomi Valkeinen 	spinlock_t int_lock;
341f7018c21STomi Valkeinen 
342f7018c21STomi Valkeinen 	/* hw cursor */
343f7018c21STomi Valkeinen 	int cursor_on;
344f7018c21STomi Valkeinen 	int cursor_blanked;
345f7018c21STomi Valkeinen 	u8  cursor_src[64];
346f7018c21STomi Valkeinen 
347f7018c21STomi Valkeinen 	/* initial parameters */
348f7018c21STomi Valkeinen 	int initial_vga;
349f7018c21STomi Valkeinen 	struct fb_var_screeninfo initial_var;
350f7018c21STomi Valkeinen 	u32 initial_fb_base;
351f7018c21STomi Valkeinen 	u32 initial_video_ram;
352f7018c21STomi Valkeinen 	u32 initial_pitch;
353f7018c21STomi Valkeinen 
354f7018c21STomi Valkeinen 	/* driver registered */
355f7018c21STomi Valkeinen 	int registered;
356f7018c21STomi Valkeinen 
357f7018c21STomi Valkeinen 	/* index into plls */
358f7018c21STomi Valkeinen 	int pll_index;
359f7018c21STomi Valkeinen 
360f7018c21STomi Valkeinen 	/* outputs */
361f7018c21STomi Valkeinen 	int num_outputs;
362f7018c21STomi Valkeinen 	struct intelfb_output_rec output[MAX_OUTPUTS];
363f7018c21STomi Valkeinen };
364f7018c21STomi Valkeinen 
365f7018c21STomi Valkeinen #define IS_I9XX(dinfo) (((dinfo)->chipset == INTEL_915G) ||	\
366f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_915GM) ||	\
367f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_945G) ||	\
368f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_945GM) ||	\
369f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_945GME) ||	\
370f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_965G) ||	\
371f7018c21STomi Valkeinen 			((dinfo)->chipset == INTEL_965GM))
372f7018c21STomi Valkeinen 
373f7018c21STomi Valkeinen /*** function prototypes ***/
374f7018c21STomi Valkeinen 
375f7018c21STomi Valkeinen extern int intelfb_var_to_depth(const struct fb_var_screeninfo *var);
376f7018c21STomi Valkeinen 
377f7018c21STomi Valkeinen #ifdef CONFIG_FB_INTEL_I2C
378f7018c21STomi Valkeinen extern void intelfb_create_i2c_busses(struct intelfb_info *dinfo);
379f7018c21STomi Valkeinen extern void intelfb_delete_i2c_busses(struct intelfb_info *dinfo);
380f7018c21STomi Valkeinen #endif
381f7018c21STomi Valkeinen 
382f7018c21STomi Valkeinen #endif /* _INTELFB_H */
383