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