| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | /*-*- linux-c -*- | 
 | 2 |  *  linux/drivers/video/i810fb_main.h -- Intel 810 frame buffer device  | 
 | 3 |  *                                       main header file | 
 | 4 |  * | 
 | 5 |  *      Copyright (C) 2001 Antonino Daplas<adaplas@pol.net> | 
 | 6 |  *      All Rights Reserved       | 
 | 7 |  * | 
 | 8 |  * | 
 | 9 |  *  This file is subject to the terms and conditions of the GNU General Public | 
 | 10 |  *  License. See the file COPYING in the main directory of this archive for | 
 | 11 |  *  more details. | 
 | 12 |  */ | 
 | 13 |  | 
 | 14 | #ifndef __I810_MAIN_H__ | 
 | 15 | #define __I810_MAIN_H__ | 
 | 16 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 17 | /* Video Timings */ | 
 | 18 | extern void round_off_xres         (u32 *xres); | 
 | 19 | extern void round_off_yres         (u32 *xres, u32 *yres); | 
 | 20 | extern u32 i810_get_watermark      (const struct fb_var_screeninfo *var, | 
 | 21 | 			            struct i810fb_par *par); | 
 | 22 | extern void i810fb_encode_registers(const struct fb_var_screeninfo *var, | 
 | 23 | 				    struct i810fb_par *par, u32 xres, u32 yres); | 
 | 24 | extern void i810fb_fill_var_timings(struct fb_var_screeninfo *var); | 
 | 25 | 				     | 
 | 26 | /* Accelerated Functions */ | 
 | 27 | extern void i810fb_fillrect (struct fb_info *p,  | 
 | 28 | 			     const struct fb_fillrect *rect); | 
 | 29 | extern void i810fb_copyarea (struct fb_info *p,  | 
 | 30 | 			     const struct fb_copyarea *region); | 
 | 31 | extern void i810fb_imageblit(struct fb_info *p, const struct fb_image *image); | 
 | 32 | extern int  i810fb_sync     (struct fb_info *p); | 
 | 33 |  | 
 | 34 | extern void i810fb_init_ringbuffer(struct fb_info *info); | 
 | 35 | extern void i810fb_load_front     (u32 offset, struct fb_info *info); | 
 | 36 |  | 
| Antonino A. Daplas | 74f6ae8 | 2005-09-09 13:10:04 -0700 | [diff] [blame] | 37 | #ifdef CONFIG_FB_I810_I2C | 
 | 38 | /* I2C */ | 
 | 39 | extern int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, | 
 | 40 | 				    int conn); | 
 | 41 | extern void i810_create_i2c_busses(struct i810fb_par *par); | 
 | 42 | extern void i810_delete_i2c_busses(struct i810fb_par *par); | 
 | 43 | #else | 
 | 44 | static inline int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, | 
 | 45 | 				    int conn) | 
 | 46 | { | 
 | 47 | 	return 1; | 
 | 48 | } | 
 | 49 | static inline void i810_create_i2c_busses(struct i810fb_par *par) { } | 
 | 50 | static inline void i810_delete_i2c_busses(struct i810fb_par *par) { } | 
 | 51 | #endif | 
 | 52 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 53 | /* Conditionals */ | 
 | 54 | #ifdef CONFIG_X86 | 
| Adrian Bunk | a0aa7d0 | 2006-01-09 20:54:04 -0800 | [diff] [blame] | 55 | static inline void flush_cache(void) | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 56 | { | 
 | 57 | 	asm volatile ("wbinvd":::"memory"); | 
 | 58 | } | 
 | 59 | #else | 
 | 60 | #define flush_cache() do { } while(0) | 
 | 61 | #endif  | 
 | 62 |  | 
 | 63 | #ifdef CONFIG_MTRR | 
| Adrian Bunk | a0aa7d0 | 2006-01-09 20:54:04 -0800 | [diff] [blame] | 64 |  | 
 | 65 | #include <asm/mtrr.h> | 
 | 66 |  | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 67 | static inline void __devinit set_mtrr(struct i810fb_par *par) | 
 | 68 | { | 
 | 69 | 	par->mtrr_reg = mtrr_add((u32) par->aperture.physical,  | 
 | 70 | 		 par->aperture.size, MTRR_TYPE_WRCOMB, 1); | 
 | 71 | 	if (par->mtrr_reg < 0) { | 
 | 72 | 		printk(KERN_ERR "set_mtrr: unable to set MTRR\n"); | 
 | 73 | 		return; | 
 | 74 | 	} | 
 | 75 | 	par->dev_flags |= HAS_MTRR; | 
 | 76 | } | 
 | 77 | static inline void unset_mtrr(struct i810fb_par *par) | 
 | 78 | { | 
 | 79 |   	if (par->dev_flags & HAS_MTRR)  | 
 | 80 |   		mtrr_del(par->mtrr_reg, (u32) par->aperture.physical,  | 
 | 81 | 			 par->aperture.size);  | 
 | 82 | } | 
 | 83 | #else | 
| Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 84 | #define set_mtrr(x) printk("set_mtrr: MTRR is disabled in the kernel\n") | 
 | 85 |  | 
 | 86 | #define unset_mtrr(x) do { } while (0) | 
 | 87 | #endif /* CONFIG_MTRR */ | 
 | 88 |  | 
 | 89 | #ifdef CONFIG_FB_I810_GTF | 
 | 90 | #define IS_DVT (0) | 
 | 91 | #else | 
 | 92 | #define IS_DVT (1) | 
 | 93 | #endif | 
 | 94 |  | 
 | 95 | #endif /* __I810_MAIN_H__ */ |