From: "Antonino A. Daplas" 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 Signed-off-by: Antonino Daplas Signed-off-by: Andrew Morton --- 25-akpm/drivers/video/intelfb/intelfb.h | 8 ++++--- 25-akpm/drivers/video/intelfb/intelfbdrv.c | 30 ++++++++++++++++++++--------- 25-akpm/drivers/video/intelfb/intelfbdrv.h | 2 - 25-akpm/drivers/video/intelfb/intelfbhw.c | 11 ++++++++++ 25-akpm/drivers/video/intelfb/intelfbhw.h | 3 ++ 5 files changed, 41 insertions(+), 13 deletions(-) diff -puN drivers/video/intelfb/intelfbdrv.c~intelfb-add-partial-support-915g-chipset drivers/video/intelfb/intelfbdrv.c --- 25/drivers/video/intelfb/intelfbdrv.c~intelfb-add-partial-support-915g-chipset Wed Feb 9 14:05:16 2005 +++ 25-akpm/drivers/video/intelfb/intelfbdrv.c Wed Feb 9 14:05:16 2005 @@ -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 @@ -153,6 +153,7 @@ static struct pci_device_id intelfb_pci_ { 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, } }; @@ -471,6 +472,8 @@ intelfb_pci_register(struct pci_dev *pde int agp_memtype; const char *s; struct agp_bridge_data *bridge; + int aperture_bar = 0; + int mmio_bar = 1; DBG_MSG("intelfb_pci_register\n"); @@ -517,13 +520,20 @@ intelfb_pci_register(struct pci_dev *pde } /* 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, @@ -990,13 +1000,15 @@ intelfb_init_var(struct intelfb_info *di } 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 -puN drivers/video/intelfb/intelfbdrv.h~intelfb-add-partial-support-915g-chipset drivers/video/intelfb/intelfbdrv.h --- 25/drivers/video/intelfb/intelfbdrv.h~intelfb-add-partial-support-915g-chipset Wed Feb 9 14:05:16 2005 +++ 25-akpm/drivers/video/intelfb/intelfbdrv.h Wed Feb 9 14:05:16 2005 @@ -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 -puN drivers/video/intelfb/intelfb.h~intelfb-add-partial-support-915g-chipset drivers/video/intelfb/intelfb.h --- 25/drivers/video/intelfb/intelfb.h~intelfb-add-partial-support-915g-chipset Wed Feb 9 14:05:16 2005 +++ 25-akpm/drivers/video/intelfb/intelfb.h Wed Feb 9 14:05:16 2005 @@ -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 @@ enum intel_chips { INTEL_852GME, INTEL_855GM, INTEL_855GME, - INTEL_865G + INTEL_865G, + INTEL_915G }; struct intelfb_hwstate { diff -puN drivers/video/intelfb/intelfbhw.c~intelfb-add-partial-support-915g-chipset drivers/video/intelfb/intelfbhw.c --- 25/drivers/video/intelfb/intelfbhw.c~intelfb-add-partial-support-915g-chipset Wed Feb 9 14:05:16 2005 +++ 25-akpm/drivers/video/intelfb/intelfbhw.c Wed Feb 9 14:05:16 2005 @@ -98,6 +98,11 @@ intelfbhw_get_chipset(struct pci_dev *pd *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 @@ intelfbhw_get_memory(struct pci_dev *pde 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 -puN drivers/video/intelfb/intelfbhw.h~intelfb-add-partial-support-915g-chipset drivers/video/intelfb/intelfbhw.h --- 25/drivers/video/intelfb/intelfbhw.h~intelfb-add-partial-support-915g-chipset Wed Feb 9 14:05:16 2005 +++ 25-akpm/drivers/video/intelfb/intelfbhw.h Wed Feb 9 14:05:16 2005 @@ -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 */ _