| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #ifndef _INTELFB_H
 | 
					
						
							|  |  |  | #define _INTELFB_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* $DHD: intelfb/intelfb.h,v 1.40 2003/06/27 15:06:25 dawes Exp $ */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <linux/agp_backend.h>
 | 
					
						
							|  |  |  | #include <linux/fb.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | #ifdef CONFIG_FB_INTEL_I2C
 | 
					
						
							|  |  |  | #include <linux/i2c.h>
 | 
					
						
							|  |  |  | #include <linux/i2c-algo-bit.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /*** Version/name ***/ | 
					
						
							| 
									
										
										
										
											2008-10-15 22:03:35 -07:00
										 |  |  | #define INTELFB_VERSION			"0.9.6"
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define INTELFB_MODULE_NAME		"intelfb"
 | 
					
						
							| 
									
										
										
										
											2008-10-15 22:03:35 -07:00
										 |  |  | #define SUPPORTED_CHIPSETS		"830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/945GME/965G/965GM"
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*** Debug/feature defines ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef DEBUG
 | 
					
						
							|  |  |  | #define DEBUG				0
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef VERBOSE
 | 
					
						
							|  |  |  | #define VERBOSE				0
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef REGDUMP
 | 
					
						
							|  |  |  | #define REGDUMP				0
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef DETECT_VGA_CLASS_ONLY
 | 
					
						
							|  |  |  | #define DETECT_VGA_CLASS_ONLY		1
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef ALLOCATE_FOR_PANNING
 | 
					
						
							|  |  |  | #define ALLOCATE_FOR_PANNING		1
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef PREFERRED_MODE
 | 
					
						
							|  |  |  | #define PREFERRED_MODE			"1024x768-32@70"
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*** hw-related values ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-12-19 15:11:40 +08:00
										 |  |  | /* Resource Allocation */ | 
					
						
							|  |  |  | #define INTELFB_FB_ACQUIRED                 1
 | 
					
						
							|  |  |  | #define INTELFB_MMIO_ACQUIRED               2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /* PCI ids for supported devices */ | 
					
						
							|  |  |  | #define PCI_DEVICE_ID_INTEL_830M	0x3577
 | 
					
						
							|  |  |  | #define PCI_DEVICE_ID_INTEL_845G	0x2562
 | 
					
						
							|  |  |  | #define PCI_DEVICE_ID_INTEL_85XGM	0x3582
 | 
					
						
							| 
									
										
										
										
											2009-04-13 14:40:10 -07:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_854		0x358E
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_865G	0x2572
 | 
					
						
							|  |  |  | #define PCI_DEVICE_ID_INTEL_915G	0x2582
 | 
					
						
							| 
									
										
										
										
											2005-11-07 01:00:33 -08:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_915GM	0x2592
 | 
					
						
							| 
									
										
										
										
											2006-03-23 11:23:55 +11:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_945G	0x2772
 | 
					
						
							| 
									
										
										
										
											2006-03-23 21:53:05 +11:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_945GM	0x27A2
 | 
					
						
							| 
									
										
										
										
											2008-10-15 22:03:35 -07:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_945GME	0x27AE
 | 
					
						
							| 
									
										
										
										
											2008-04-28 02:15:43 -07:00
										 |  |  | #define PCI_DEVICE_ID_INTEL_965G	0x29A2
 | 
					
						
							|  |  |  | #define PCI_DEVICE_ID_INTEL_965GM	0x2A02
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* Size of MMIO region */ | 
					
						
							|  |  |  | #define INTEL_REG_SIZE			0x80000
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define STRIDE_ALIGNMENT		16
 | 
					
						
							| 
									
										
										
										
											2006-05-27 18:17:52 +10:00
										 |  |  | #define STRIDE_ALIGNMENT_I9XX		64
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define PALETTE_8_ENTRIES		256
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*** Macros ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* basic arithmetic */ | 
					
						
							|  |  |  | #define KB(x)			((x) * 1024)
 | 
					
						
							|  |  |  | #define MB(x)			((x) * 1024 * 1024)
 | 
					
						
							|  |  |  | #define BtoKB(x)		((x) / 1024)
 | 
					
						
							|  |  |  | #define BtoMB(x)		((x) / 1024 / 1024)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define GTT_PAGE_SIZE           KB(4)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ROUND_UP_TO(x, y)	(((x) + (y) - 1) / (y) * (y))
 | 
					
						
							|  |  |  | #define ROUND_DOWN_TO(x, y)	((x) / (y) * (y))
 | 
					
						
							|  |  |  | #define ROUND_UP_TO_PAGE(x)	ROUND_UP_TO((x), GTT_PAGE_SIZE)
 | 
					
						
							|  |  |  | #define ROUND_DOWN_TO_PAGE(x)	ROUND_DOWN_TO((x), GTT_PAGE_SIZE)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* messages */ | 
					
						
							|  |  |  | #define PFX			INTELFB_MODULE_NAME ": "
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define ERR_MSG(fmt, args...)	printk(KERN_ERR PFX fmt, ## args)
 | 
					
						
							|  |  |  | #define WRN_MSG(fmt, args...)	printk(KERN_WARNING PFX fmt, ## args)
 | 
					
						
							|  |  |  | #define NOT_MSG(fmt, args...)	printk(KERN_NOTICE PFX fmt, ## args)
 | 
					
						
							|  |  |  | #define INF_MSG(fmt, args...)	printk(KERN_INFO PFX fmt, ## args)
 | 
					
						
							|  |  |  | #if DEBUG
 | 
					
						
							|  |  |  | #define DBG_MSG(fmt, args...)	printk(KERN_DEBUG PFX fmt, ## args)
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | #define DBG_MSG(fmt, args...)	while (0) printk(fmt, ## args)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* get commonly used pointers */ | 
					
						
							|  |  |  | #define GET_DINFO(info)		(info)->par
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* misc macros */ | 
					
						
							|  |  |  | #define ACCEL(d, i)                                                     \
 | 
					
						
							|  |  |  | 	((d)->accel && !(d)->ring_lockup &&                             \ | 
					
						
							|  |  |  | 	 ((i)->var.accel_flags & FB_ACCELF_TEXT)) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*#define NOACCEL_CHIPSET(d)						\
 | 
					
						
							|  |  |  | 	((d)->chipset != INTEL_865G)*/ | 
					
						
							|  |  |  | #define NOACCEL_CHIPSET(d)						\
 | 
					
						
							|  |  |  | 	(0) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define FIXED_MODE(d) ((d)->fixed_mode)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-02-03 17:31:49 +02:00
										 |  |  | /*** Driver parameters ***/ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define RINGBUFFER_SIZE		KB(64)
 | 
					
						
							|  |  |  | #define HW_CURSOR_SIZE		KB(4)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* Intel agpgart driver */ | 
					
						
							|  |  |  | #define AGP_PHYSICAL_MEMORY     2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | /* store information about an Ixxx DVO */ | 
					
						
							|  |  |  | /* The i830->i865 use multiple DVOs with multiple i2cs */ | 
					
						
							|  |  |  | /* the i915, i945 have a single sDVO i2c bus - which is different */ | 
					
						
							|  |  |  | #define MAX_OUTPUTS 6
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | /* these are outputs from the chip - integrated only
 | 
					
						
							|  |  |  |    external chips are via DVO or SDVO output */ | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_UNUSED 0
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_ANALOG 1
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_DVO 2
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_SDVO 3
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_LVDS 4
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_TVOUT 5
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define INTELFB_DVO_CHIP_NONE 0
 | 
					
						
							|  |  |  | #define INTELFB_DVO_CHIP_LVDS 1
 | 
					
						
							|  |  |  | #define INTELFB_DVO_CHIP_TMDS 2
 | 
					
						
							|  |  |  | #define INTELFB_DVO_CHIP_TVOUT 4
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_PIPE_NC  0
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_PIPE_A   1
 | 
					
						
							|  |  |  | #define INTELFB_OUTPUT_PIPE_B   2
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*** Data Types ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* supported chipsets */ | 
					
						
							|  |  |  | enum intel_chips { | 
					
						
							|  |  |  | 	INTEL_830M, | 
					
						
							|  |  |  | 	INTEL_845G, | 
					
						
							|  |  |  | 	INTEL_85XGM, | 
					
						
							|  |  |  | 	INTEL_852GM, | 
					
						
							|  |  |  | 	INTEL_852GME, | 
					
						
							| 
									
										
										
										
											2009-04-13 14:40:10 -07:00
										 |  |  | 	INTEL_854, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	INTEL_855GM, | 
					
						
							|  |  |  | 	INTEL_855GME, | 
					
						
							|  |  |  | 	INTEL_865G, | 
					
						
							| 
									
										
										
										
											2005-11-07 01:00:33 -08:00
										 |  |  | 	INTEL_915G, | 
					
						
							| 
									
										
										
										
											2006-03-23 11:23:55 +11:00
										 |  |  | 	INTEL_915GM, | 
					
						
							| 
									
										
										
										
											2006-03-23 21:53:05 +11:00
										 |  |  | 	INTEL_945G, | 
					
						
							|  |  |  | 	INTEL_945GM, | 
					
						
							| 
									
										
										
										
											2008-10-15 22:03:35 -07:00
										 |  |  | 	INTEL_945GME, | 
					
						
							| 
									
										
										
										
											2008-04-28 02:15:43 -07:00
										 |  |  | 	INTEL_965G, | 
					
						
							|  |  |  | 	INTEL_965GM, | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct intelfb_hwstate { | 
					
						
							|  |  |  | 	u32 vga0_divisor; | 
					
						
							|  |  |  | 	u32 vga1_divisor; | 
					
						
							|  |  |  | 	u32 vga_pd; | 
					
						
							|  |  |  | 	u32 dpll_a; | 
					
						
							|  |  |  | 	u32 dpll_b; | 
					
						
							|  |  |  | 	u32 fpa0; | 
					
						
							|  |  |  | 	u32 fpa1; | 
					
						
							|  |  |  | 	u32 fpb0; | 
					
						
							|  |  |  | 	u32 fpb1; | 
					
						
							|  |  |  | 	u32 palette_a[PALETTE_8_ENTRIES]; | 
					
						
							|  |  |  | 	u32 palette_b[PALETTE_8_ENTRIES]; | 
					
						
							|  |  |  | 	u32 htotal_a; | 
					
						
							|  |  |  | 	u32 hblank_a; | 
					
						
							|  |  |  | 	u32 hsync_a; | 
					
						
							|  |  |  | 	u32 vtotal_a; | 
					
						
							|  |  |  | 	u32 vblank_a; | 
					
						
							|  |  |  | 	u32 vsync_a; | 
					
						
							|  |  |  | 	u32 src_size_a; | 
					
						
							|  |  |  | 	u32 bclrpat_a; | 
					
						
							|  |  |  | 	u32 htotal_b; | 
					
						
							|  |  |  | 	u32 hblank_b; | 
					
						
							|  |  |  | 	u32 hsync_b; | 
					
						
							|  |  |  | 	u32 vtotal_b; | 
					
						
							|  |  |  | 	u32 vblank_b; | 
					
						
							|  |  |  | 	u32 vsync_b; | 
					
						
							|  |  |  | 	u32 src_size_b; | 
					
						
							|  |  |  | 	u32 bclrpat_b; | 
					
						
							|  |  |  | 	u32 adpa; | 
					
						
							|  |  |  | 	u32 dvoa; | 
					
						
							|  |  |  | 	u32 dvob; | 
					
						
							|  |  |  | 	u32 dvoc; | 
					
						
							|  |  |  | 	u32 dvoa_srcdim; | 
					
						
							|  |  |  | 	u32 dvob_srcdim; | 
					
						
							|  |  |  | 	u32 dvoc_srcdim; | 
					
						
							|  |  |  | 	u32 lvds; | 
					
						
							|  |  |  | 	u32 pipe_a_conf; | 
					
						
							|  |  |  | 	u32 pipe_b_conf; | 
					
						
							|  |  |  | 	u32 disp_arb; | 
					
						
							|  |  |  | 	u32 cursor_a_control; | 
					
						
							|  |  |  | 	u32 cursor_b_control; | 
					
						
							|  |  |  | 	u32 cursor_a_base; | 
					
						
							|  |  |  | 	u32 cursor_b_base; | 
					
						
							|  |  |  | 	u32 cursor_size; | 
					
						
							|  |  |  | 	u32 disp_a_ctrl; | 
					
						
							|  |  |  | 	u32 disp_b_ctrl; | 
					
						
							|  |  |  | 	u32 disp_a_base; | 
					
						
							|  |  |  | 	u32 disp_b_base; | 
					
						
							|  |  |  | 	u32 cursor_a_palette[4]; | 
					
						
							|  |  |  | 	u32 cursor_b_palette[4]; | 
					
						
							|  |  |  | 	u32 disp_a_stride; | 
					
						
							|  |  |  | 	u32 disp_b_stride; | 
					
						
							|  |  |  | 	u32 vgacntrl; | 
					
						
							|  |  |  | 	u32 add_id; | 
					
						
							|  |  |  | 	u32 swf0x[7]; | 
					
						
							|  |  |  | 	u32 swf1x[7]; | 
					
						
							|  |  |  | 	u32 swf3x[3]; | 
					
						
							|  |  |  | 	u32 fence[8]; | 
					
						
							|  |  |  | 	u32 instpm; | 
					
						
							|  |  |  | 	u32 mem_mode; | 
					
						
							|  |  |  | 	u32 fw_blc_0; | 
					
						
							|  |  |  | 	u32 fw_blc_1; | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:41 -04:00
										 |  |  | 	u16 hwstam; | 
					
						
							|  |  |  | 	u16 ier; | 
					
						
							|  |  |  | 	u16 iir; | 
					
						
							|  |  |  | 	u16 imr; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct intelfb_heap_data { | 
					
						
							|  |  |  | 	u32 physical; | 
					
						
							|  |  |  | 	u8 __iomem *virtual; | 
					
						
							| 
									
										
										
										
											2007-10-16 01:29:31 -07:00
										 |  |  | 	u32 offset;		/* in GATT pages */ | 
					
						
							|  |  |  | 	u32 size;		/* in bytes */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | #ifdef CONFIG_FB_INTEL_I2C
 | 
					
						
							|  |  |  | struct intelfb_i2c_chan { | 
					
						
							|  |  |  |     struct intelfb_info *dinfo; | 
					
						
							|  |  |  |     u32 reg; | 
					
						
							|  |  |  |     struct i2c_adapter adapter; | 
					
						
							|  |  |  |     struct i2c_algo_bit_data algo; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | struct intelfb_output_rec { | 
					
						
							|  |  |  |     int type; | 
					
						
							|  |  |  |     int pipe; | 
					
						
							|  |  |  |     int flags; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef CONFIG_FB_INTEL_I2C
 | 
					
						
							|  |  |  |     struct intelfb_i2c_chan i2c_bus; | 
					
						
							|  |  |  |     struct intelfb_i2c_chan ddc_bus; | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:41 -04:00
										 |  |  | struct intelfb_vsync { | 
					
						
							|  |  |  | 	wait_queue_head_t wait; | 
					
						
							|  |  |  | 	unsigned int count; | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:42 -04:00
										 |  |  | 	int pan_display; | 
					
						
							|  |  |  | 	u32 pan_offset; | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:41 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | struct intelfb_info { | 
					
						
							|  |  |  | 	struct fb_info *info; | 
					
						
							|  |  |  | 	struct fb_ops  *fbops; | 
					
						
							|  |  |  | 	struct pci_dev *pdev; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	struct intelfb_hwstate save_state; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* agpgart structs */ | 
					
						
							| 
									
										
										
										
											2007-10-16 01:29:31 -07:00
										 |  |  | 	struct agp_memory *gtt_fb_mem;     /* use all stolen memory or vram */ | 
					
						
							|  |  |  | 	struct agp_memory *gtt_ring_mem;   /* ring buffer */ | 
					
						
							|  |  |  | 	struct agp_memory *gtt_cursor_mem; /* hw cursor */ | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* use a gart reserved fb mem */ | 
					
						
							|  |  |  | 	u8 fbmem_gart; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* mtrr support */ | 
					
						
							| 
									
										
										
										
											2006-08-22 10:10:56 +10:00
										 |  |  | 	int mtrr_reg; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	u32 has_mtrr; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* heap data */ | 
					
						
							|  |  |  | 	struct intelfb_heap_data aperture; | 
					
						
							|  |  |  | 	struct intelfb_heap_data fb; | 
					
						
							|  |  |  | 	struct intelfb_heap_data ring; | 
					
						
							|  |  |  | 	struct intelfb_heap_data cursor; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* mmio regs */ | 
					
						
							|  |  |  | 	u32 mmio_base_phys; | 
					
						
							|  |  |  | 	u8 __iomem *mmio_base; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* fb start offset (in bytes) */ | 
					
						
							|  |  |  | 	u32 fb_start; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* ring buffer */ | 
					
						
							| 
									
										
										
										
											2006-06-23 06:05:39 +01:00
										 |  |  | 	u32 ring_head; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 	u32 ring_tail; | 
					
						
							|  |  |  | 	u32 ring_tail_mask; | 
					
						
							|  |  |  | 	u32 ring_space; | 
					
						
							|  |  |  | 	u32 ring_lockup; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* palette */ | 
					
						
							| 
									
										
										
										
											2007-07-17 04:05:44 -07:00
										 |  |  | 	u32 pseudo_palette[16]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* chip info */ | 
					
						
							|  |  |  | 	int pci_chipset; | 
					
						
							|  |  |  | 	int chipset; | 
					
						
							|  |  |  | 	const char *name; | 
					
						
							|  |  |  | 	int mobile; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* current mode */ | 
					
						
							|  |  |  | 	int bpp, depth; | 
					
						
							|  |  |  | 	u32 visual; | 
					
						
							|  |  |  | 	int xres, yres, pitch; | 
					
						
							|  |  |  | 	int pixclock; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* current pipe */ | 
					
						
							|  |  |  | 	int pipe; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* some flags */ | 
					
						
							|  |  |  | 	int accel; | 
					
						
							|  |  |  | 	int hwcursor; | 
					
						
							|  |  |  | 	int fixed_mode; | 
					
						
							|  |  |  | 	int ring_active; | 
					
						
							| 
									
										
										
										
											2005-12-19 15:11:40 +08:00
										 |  |  | 	int flag; | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:41 -04:00
										 |  |  | 	unsigned long irq_flags; | 
					
						
							|  |  |  | 	int open; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* vsync */ | 
					
						
							|  |  |  | 	struct intelfb_vsync vsync; | 
					
						
							|  |  |  | 	spinlock_t int_lock; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* hw cursor */ | 
					
						
							|  |  |  | 	int cursor_on; | 
					
						
							|  |  |  | 	int cursor_blanked; | 
					
						
							|  |  |  | 	u8  cursor_src[64]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* initial parameters */ | 
					
						
							|  |  |  | 	int initial_vga; | 
					
						
							|  |  |  | 	struct fb_var_screeninfo initial_var; | 
					
						
							|  |  |  | 	u32 initial_fb_base; | 
					
						
							|  |  |  | 	u32 initial_video_ram; | 
					
						
							|  |  |  | 	u32 initial_pitch; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* driver registered */ | 
					
						
							|  |  |  | 	int registered; | 
					
						
							| 
									
										
										
										
											2007-10-16 01:29:31 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-03-20 20:26:45 +11:00
										 |  |  | 	/* index into plls */ | 
					
						
							|  |  |  | 	int pll_index; | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* outputs */ | 
					
						
							|  |  |  | 	int num_outputs; | 
					
						
							|  |  |  | 	struct intelfb_output_rec output[MAX_OUTPUTS]; | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-16 01:29:33 -07:00
										 |  |  | #define IS_I9XX(dinfo) (((dinfo)->chipset == INTEL_915G) ||	\
 | 
					
						
							|  |  |  | 			((dinfo)->chipset == INTEL_915GM) ||	\ | 
					
						
							|  |  |  | 			((dinfo)->chipset == INTEL_945G) ||	\ | 
					
						
							| 
									
										
										
										
											2008-04-28 02:15:43 -07:00
										 |  |  | 			((dinfo)->chipset == INTEL_945GM) ||	\ | 
					
						
							| 
									
										
										
										
											2008-10-15 22:03:35 -07:00
										 |  |  | 			((dinfo)->chipset == INTEL_945GME) ||	\ | 
					
						
							| 
									
										
										
										
											2008-04-28 02:15:43 -07:00
										 |  |  | 			((dinfo)->chipset == INTEL_965G) ||	\ | 
					
						
							|  |  |  | 			((dinfo)->chipset == INTEL_965GM)) | 
					
						
							| 
									
										
										
										
											2006-03-23 13:06:32 +11:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:36:42 -04:00
										 |  |  | #ifndef FBIO_WAITFORVSYNC
 | 
					
						
							|  |  |  | #define FBIO_WAITFORVSYNC	_IOW('F', 0x20, __u32)
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | /*** function prototypes ***/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern int intelfb_var_to_depth(const struct fb_var_screeninfo *var); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | #ifdef CONFIG_FB_INTEL_I2C
 | 
					
						
							|  |  |  | extern void intelfb_create_i2c_busses(struct intelfb_info *dinfo); | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | extern void intelfb_delete_i2c_busses(struct intelfb_info *dinfo); | 
					
						
							| 
									
										
										
										
											2006-06-20 14:55:55 -04:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-04-16 15:20:36 -07:00
										 |  |  | #endif /* _INTELFB_H */
 |