/* cocci issues ;-( */ #ifndef VIDEO_H #define VIDEO_H 1 #include #include #include #include #include #include #include #include #include #include #include #include /* stuff we can't get coccinelle to do yet */ #define __iomem #define __read_mostly #define __always_unused #define module_param_named(a, b, c, d) #define MODULE_PARM_DESC(a, b) #define DRM_DEBUG_KMS printf #define CONFIG_DRM_I915_KMS 1 #define module_init(x); #define module_exit(x); #define MODULE_AUTHOR(x) #define MODULE_DESCRIPTION(x) #define MODULE_LICENSE(a) #define MODULE_DEVICE_TABLE(a, b) /* constants that will never change from linux/vga.h */ /* Legacy VGA regions */ #define VGA_RSRC_NONE 0x00 #define VGA_RSRC_LEGACY_IO 0x01 #define VGA_RSRC_LEGACY_MEM 0x02 #define VGA_RSRC_LEGACY_MASK (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM) /* Non-legacy access */ #define VGA_RSRC_NORMAL_IO 0x04 #define VGA_RSRC_NORMAL_MEM 0x08 /* define in pci.h! */ #include /* idiocy. how many names to we need for a type? */ typedef u32 uint32_t; typedef u64 uint64_t; /* WTF */ typedef int bool; enum {false = 0, true}; /* we define our own. The kernel one is too full of stuff. */ struct mode_config { int num_fb; int num_connector; int num_crtc; int num_encoder; int min_width, min_height, max_width, max_height; }; struct drm_device { struct pci_dev *pdev; u8 *bios_bin; struct drm_i915_private *dev_private; struct mode_config mode_config; }; /* we're willing to define our own here because it's relatively unchanging */ #define PCI_ANY_ID (~0) struct pci_device_id { u32 vendor, device; /* Vendor and device ID or PCI_ANY_ID*/ u32 subvendor, subdevice; /* Subsystem ID's or PCI_ANY_ID */ u32 class, class_mask; /* (class,subclass,prog-if) triplet */ unsigned long driver_data; /* Data private to the driver */ }; /* per the cocinelle people, they can't handle this. * It also almost never changes */ #define INTEL_VGA_DEVICE(id, info) { \ .class = PCI_CLASS_DISPLAY_VGA << 8, \ .class_mask = 0xff0000, \ .vendor = 0x8086, \ .device = id, \ .subvendor = PCI_ANY_ID, \ .subdevice = PCI_ANY_ID, \ .driver_data = (unsigned long) info } #define wait_for(condition, time) (sleep(1+time/50) && (!condition)) /* random crap from kernel.h. * Kernel.h is a catch-all for all kinds of junk and it's * not worth using coccinelle (yet) to pull it apart. Maybe later. * And, yes, gcc still does not have nelem! */ #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) #define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0])) #define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1) #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask)) #define ALIGN(x, a) __ALIGN_KERNEL((x), (a)) #define __ALIGN_MASK(x, mask) __ALIGN_KERNEL_MASK((x), (mask)) #define PTR_ALIGN(p, a) ((typeof(p))ALIGN((unsigned long)(p), (a))) #define IS_ALIGNED(x, a) (((x) & ((typeof(x))(a) - 1)) == 0) /* temporary. */ void *dmi_check_system(unsigned long); #include "final/drm_dp_helper.h" #include "final/i915_reg.h" #include "final/i915_drv.h" #include "final/drm_mode.h" #include "final/drm_crtc.h" unsigned long I915_READ(unsigned long addr); void I915_WRITE(unsigned long addr, unsigned long val); u16 I915_READ16(unsigned long addr); void I915_WRITE16(unsigned long addr, u16 val); unsigned long msecs(void); void mdelay(unsigned long ms); /* these should be the same. */ #define POSTING_READ I915_READ #define POSTING_READ16 I915_READ16 void *pci_map_rom(struct pci_dev *dev, size_t *size); void *pci_unmap_rom(struct pci_dev *dev, void *p); extern unsigned int i915_lvds_downclock; extern int i915_vbt_sdvo_panel_type; unsigned long lvds_do_not_use_alternate_frequency; #endif /* VIDEO_H */