[patch] intelfb: add (partial) support for 915G
From: Buttchereit, Axel (XL) <hidden>
Date: 2005-01-29 05:11:25
Add (partial) support for 915G No HW cursor at the moment Screen is blanked but signal/sync is not switched off Mostly derived from XFree86/Xorg driver Pass "vesa_modes" and VESA_MODEDB_SIZE in call to "fb_find_mode()" to allow loading as module. Makes "vesa_modes" also the default "modedb" when linking statically into the kernel. Change PREFERRED_MODE to more reasonable value "1024x768-32@70" Signed-off-by: Axel Buttchereit <redacted> diff -ru linux.orig/drivers/video/intelfb/intelfbdrv.c linux/drivers/video/intelfb/intelfbdrv.c
--- linux.orig/drivers/video/intelfb/intelfbdrv.c 2005-01-29 05:16:44.372522436 +0100
+++ linux/drivers/video/intelfb/intelfbdrv.c 2005-01-29 05:40:29.566548604 +0100@@ -1,7 +1,7 @@ /* * intelfb * - * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G + * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G * integrated graphics chips. * * Copyright © 2002, 2003 David Dawes <dawes@xfree86.org>
@@ -153,6 +153,7 @@ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_845G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_845G }, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_85XGM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_85XGM }, { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_865G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_865G }, + { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915G }, { 0, } };
@@ -470,6 +471,8 @@ struct agp_kern_info gtt_info; int agp_memtype; const char *s; + int aperture_bar = 0; + int mmio_bar = 1; DBG_MSG("intelfb_pci_register\n");
@@ -516,13 +519,20 @@ } /* Set base addresses. */ - dinfo->aperture.physical = pci_resource_start(pdev, 0); - dinfo->aperture.size = pci_resource_len(pdev, 0); - dinfo->mmio_base_phys = pci_resource_start(pdev, 1); - + if (ent->device == PCI_DEVICE_ID_INTEL_915G) { + aperture_bar = 2; + mmio_bar = 0; + /* Disable HW cursor on 915G (not implemented yet) */ + hwcursor = 0; + } + dinfo->aperture.physical = pci_resource_start(pdev, aperture_bar); + dinfo->aperture.size = pci_resource_len(pdev, aperture_bar); + dinfo->mmio_base_phys = pci_resource_start(pdev, mmio_bar); DBG_MSG("fb aperture: 0x%lx/0x%lx, MMIO region: 0x%lx/0x%lx\n", - pci_resource_start(pdev, 0), pci_resource_len(pdev, 0), - pci_resource_start(pdev, 1), pci_resource_len(pdev, 1)); + pci_resource_start(pdev, aperture_bar), + pci_resource_len(pdev, aperture_bar), + pci_resource_start(pdev, mmio_bar), + pci_resource_len(pdev, mmio_bar)); /* Reserve the fb and MMIO regions */ if (!request_mem_region(dinfo->aperture.physical, dinfo->aperture.size,
@@ -989,13 +999,15 @@ } else { if (mode) { msrc = fb_find_mode(var, dinfo->info, mode, - NULL, 0, NULL, 0); + vesa_modes, VESA_MODEDB_SIZE, + NULL, 0); if (msrc) msrc |= 8; } if (!msrc) { msrc = fb_find_mode(var, dinfo->info, PREFERRED_MODE, - NULL, 0, NULL, 0); + vesa_modes, VESA_MODEDB_SIZE, + NULL, 0); } }
diff -ru linux.orig/drivers/video/intelfb/intelfbdrv.h linux/drivers/video/intelfb/intelfbdrv.h
--- linux.orig/drivers/video/intelfb/intelfbdrv.h 2005-01-29 05:16:44.373522137 +0100
+++ linux/drivers/video/intelfb/intelfbdrv.h 2005-01-29 03:33:52.021728146 +0100@@ -5,7 +5,7 @@ ****************************************************************************** * intelfb * - * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G + * Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G * integrated graphics chips. * * Copyright © 2004 Sylvain Meyer
diff -ru linux.orig/drivers/video/intelfb/intelfb.h linux/drivers/video/intelfb/intelfb.h
--- linux.orig/drivers/video/intelfb/intelfb.h 2005-01-29 05:16:44.360526028 +0100
+++ linux/drivers/video/intelfb/intelfb.h 2005-01-29 05:22:04.356713430 +0100@@ -10,7 +10,7 @@ /*** Version/name ***/ #define INTELFB_VERSION "0.9.2" #define INTELFB_MODULE_NAME "intelfb" -#define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G" +#define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G/915G" /*** Debug/feature defines ***/
@@ -36,7 +36,7 @@ #endif #ifndef PREFERRED_MODE -#define PREFERRED_MODE "1024x768-16@60" +#define PREFERRED_MODE "1024x768-32@70" #endif /*** hw-related values ***/
@@ -46,6 +46,7 @@ #define PCI_DEVICE_ID_INTEL_845G 0x2562 #define PCI_DEVICE_ID_INTEL_85XGM 0x3582 #define PCI_DEVICE_ID_INTEL_865G 0x2572 +#define PCI_DEVICE_ID_INTEL_915G 0x2582 /* Size of MMIO region */ #define INTEL_REG_SIZE 0x80000
@@ -117,7 +118,8 @@ INTEL_852GME, INTEL_855GM, INTEL_855GME, - INTEL_865G + INTEL_865G, + INTEL_915G }; struct intelfb_hwstate {
diff -ru linux.orig/drivers/video/intelfb/intelfbhw.c linux/drivers/video/intelfb/intelfbhw.c
--- linux.orig/drivers/video/intelfb/intelfbhw.c 2005-01-29 05:16:44.381519742 +0100
+++ linux/drivers/video/intelfb/intelfbhw.c 2005-01-29 03:40:41.971680927 +0100@@ -98,6 +98,11 @@ *chipset = INTEL_865G; *mobile = 0; return 0; + case PCI_DEVICE_ID_INTEL_915G: + *name = "Intel(R) 915G"; + *chipset = INTEL_915G; + *mobile = 0; + return 0; default: return 1; }
@@ -169,6 +174,12 @@ case INTEL_855_GMCH_GMS_STOLEN_32M: *stolen_size = MB(32) - KB(132); return 0; + case INTEL_915G_GMCH_GMS_STOLEN_48M: + *stolen_size = MB(48) - KB(132); + return 0; + case INTEL_915G_GMCH_GMS_STOLEN_64M: + *stolen_size = MB(64) - KB(132); + return 0; case INTEL_855_GMCH_GMS_DISABLED: ERR_MSG("video memory is disabled\n"); return 0;
diff -ru linux.orig/drivers/video/intelfb/intelfbhw.h linux/drivers/video/intelfb/intelfbhw.h
--- linux.orig/drivers/video/intelfb/intelfbhw.h 2005-01-29 05:16:44.395515551 +0100
+++ linux/drivers/video/intelfb/intelfbhw.h 2005-01-29 03:37:01.004941554 +0100@@ -46,6 +46,9 @@ #define INTEL_855_GMCH_GMS_STOLEN_16M (0x4 << 4) #define INTEL_855_GMCH_GMS_STOLEN_32M (0x5 << 4) +#define INTEL_915G_GMCH_GMS_STOLEN_48M (0x6 << 4) +#define INTEL_915G_GMCH_GMS_STOLEN_64M (0x7 << 4) + /* HW registers */ /* Fence registers */ -------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting Tool for open source databases. Create drag-&-drop reports. Save time by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc. Download a FREE copy at http://www.intelliview.com/go/osdn_nl