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 17/* Video Timings */ 18extern void round_off_xres (u32 *xres); 19extern void round_off_yres (u32 *xres, u32 *yres); 20extern u32 i810_get_watermark (const struct fb_var_screeninfo *var, 21 struct i810fb_par *par); 22extern void i810fb_encode_registers(const struct fb_var_screeninfo *var, 23 struct i810fb_par *par, u32 xres, u32 yres); 24extern void i810fb_fill_var_timings(struct fb_var_screeninfo *var); 25 26/* Accelerated Functions */ 27extern void i810fb_fillrect (struct fb_info *p, 28 const struct fb_fillrect *rect); 29extern void i810fb_copyarea (struct fb_info *p, 30 const struct fb_copyarea *region); 31extern void i810fb_imageblit(struct fb_info *p, const struct fb_image *image); 32extern int i810fb_sync (struct fb_info *p); 33 34extern void i810fb_init_ringbuffer(struct fb_info *info); 35extern void i810fb_load_front (u32 offset, struct fb_info *info); 36 37#ifdef CONFIG_FB_I810_I2C 38/* I2C */ 39extern int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, 40 int conn); 41extern void i810_create_i2c_busses(struct i810fb_par *par); 42extern void i810_delete_i2c_busses(struct i810fb_par *par); 43#else 44static inline int i810_probe_i2c_connector(struct fb_info *info, u8 **out_edid, 45 int conn) 46{ 47 return 1; 48} 49static inline void i810_create_i2c_busses(struct i810fb_par *par) { } 50static inline void i810_delete_i2c_busses(struct i810fb_par *par) { } 51#endif 52 53/* Conditionals */ 54#ifdef CONFIG_X86 55static inline void flush_cache(void) 56{ 57 asm volatile ("wbinvd":::"memory"); 58} 59#else 60#define flush_cache() do { } while(0) 61#endif 62 63#ifdef CONFIG_MTRR 64 65#include <asm/mtrr.h> 66 67static inline void 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} 77static 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 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__ */ 96