mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 11:46:19 +00:00
fbdev: intelfb: add support for the Intel Integrated Graphics Controller 965G/965GM
Add support for the 965G and 965GM graphic chipsets to the intelfb driver. I have a notebook with an Intel Mobile GM965/GL960 Integrated Graphics Controller and with the attached patch the framebuffer comes up. I have tested it a bit with DirectFB to make sure it is working stable. I also have an Intel Mobile GM945 and I compared the results, the programming interface of the 9xx series from Intel is mostly the same, so I think the patch should add all the functionality which the 945GM has. Signed-off-by: Maik Broemme <mbroemme@plusserver.de> Cc: Dave Airlie <airlied@linux.ie> Cc: Antonino Daplas <adaplas@pol.net> Cc: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> Cc: Krzysztof Halasa <khc@pm.waw.pl> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
0aa163418e
commit
0e170c72c0
6 changed files with 40 additions and 8 deletions
|
@ -14,6 +14,8 @@ graphics devices. These would include:
|
||||||
Intel 915GM
|
Intel 915GM
|
||||||
Intel 945G
|
Intel 945G
|
||||||
Intel 945GM
|
Intel 945GM
|
||||||
|
Intel 965G
|
||||||
|
Intel 965GM
|
||||||
|
|
||||||
B. List of available options
|
B. List of available options
|
||||||
|
|
||||||
|
|
|
@ -1119,7 +1119,7 @@ config FB_CARILLO_RANCH
|
||||||
This driver supports the LE80578 (Carillo Ranch) board
|
This driver supports the LE80578 (Carillo Ranch) board
|
||||||
|
|
||||||
config FB_INTEL
|
config FB_INTEL
|
||||||
tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G support (EXPERIMENTAL)"
|
tristate "Intel 830M/845G/852GM/855GM/865G/915G/945G/945GM/965G/965GM support (EXPERIMENTAL)"
|
||||||
depends on FB && EXPERIMENTAL && PCI && X86
|
depends on FB && EXPERIMENTAL && PCI && X86
|
||||||
select AGP
|
select AGP
|
||||||
select AGP_INTEL
|
select AGP_INTEL
|
||||||
|
@ -1129,7 +1129,7 @@ config FB_INTEL
|
||||||
select FB_CFB_IMAGEBLIT
|
select FB_CFB_IMAGEBLIT
|
||||||
help
|
help
|
||||||
This driver supports the on-board graphics built in to the Intel
|
This driver supports the on-board graphics built in to the Intel
|
||||||
830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM chipsets.
|
830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM chipsets.
|
||||||
Say Y if you have and plan to use such a board.
|
Say Y if you have and plan to use such a board.
|
||||||
|
|
||||||
If you say Y here and want DDC/I2C support you must first say Y to
|
If you say Y here and want DDC/I2C support you must first say Y to
|
||||||
|
|
|
@ -12,9 +12,9 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*** Version/name ***/
|
/*** Version/name ***/
|
||||||
#define INTELFB_VERSION "0.9.4"
|
#define INTELFB_VERSION "0.9.5"
|
||||||
#define INTELFB_MODULE_NAME "intelfb"
|
#define INTELFB_MODULE_NAME "intelfb"
|
||||||
#define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM"
|
#define SUPPORTED_CHIPSETS "830M/845G/852GM/855GM/865G/915G/915GM/945G/945GM/965G/965GM"
|
||||||
|
|
||||||
|
|
||||||
/*** Debug/feature defines ***/
|
/*** Debug/feature defines ***/
|
||||||
|
@ -58,6 +58,8 @@
|
||||||
#define PCI_DEVICE_ID_INTEL_915GM 0x2592
|
#define PCI_DEVICE_ID_INTEL_915GM 0x2592
|
||||||
#define PCI_DEVICE_ID_INTEL_945G 0x2772
|
#define PCI_DEVICE_ID_INTEL_945G 0x2772
|
||||||
#define PCI_DEVICE_ID_INTEL_945GM 0x27A2
|
#define PCI_DEVICE_ID_INTEL_945GM 0x27A2
|
||||||
|
#define PCI_DEVICE_ID_INTEL_965G 0x29A2
|
||||||
|
#define PCI_DEVICE_ID_INTEL_965GM 0x2A02
|
||||||
|
|
||||||
/* Size of MMIO region */
|
/* Size of MMIO region */
|
||||||
#define INTEL_REG_SIZE 0x80000
|
#define INTEL_REG_SIZE 0x80000
|
||||||
|
@ -158,6 +160,8 @@ enum intel_chips {
|
||||||
INTEL_915GM,
|
INTEL_915GM,
|
||||||
INTEL_945G,
|
INTEL_945G,
|
||||||
INTEL_945GM,
|
INTEL_945GM,
|
||||||
|
INTEL_965G,
|
||||||
|
INTEL_965GM,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct intelfb_hwstate {
|
struct intelfb_hwstate {
|
||||||
|
@ -358,7 +362,9 @@ struct intelfb_info {
|
||||||
#define IS_I9XX(dinfo) (((dinfo)->chipset == INTEL_915G) || \
|
#define IS_I9XX(dinfo) (((dinfo)->chipset == INTEL_915G) || \
|
||||||
((dinfo)->chipset == INTEL_915GM) || \
|
((dinfo)->chipset == INTEL_915GM) || \
|
||||||
((dinfo)->chipset == INTEL_945G) || \
|
((dinfo)->chipset == INTEL_945G) || \
|
||||||
((dinfo)->chipset==INTEL_945GM))
|
((dinfo)->chipset == INTEL_945GM) || \
|
||||||
|
((dinfo)->chipset == INTEL_965G) || \
|
||||||
|
((dinfo)->chipset == INTEL_965GM))
|
||||||
|
|
||||||
#ifndef FBIO_WAITFORVSYNC
|
#ifndef FBIO_WAITFORVSYNC
|
||||||
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
|
#define FBIO_WAITFORVSYNC _IOW('F', 0x20, __u32)
|
||||||
|
|
|
@ -169,6 +169,8 @@ void intelfb_create_i2c_busses(struct intelfb_info *dinfo)
|
||||||
/* has some LVDS + tv-out */
|
/* has some LVDS + tv-out */
|
||||||
case INTEL_945G:
|
case INTEL_945G:
|
||||||
case INTEL_945GM:
|
case INTEL_945GM:
|
||||||
|
case INTEL_965G:
|
||||||
|
case INTEL_965GM:
|
||||||
/* SDVO ports have a single control bus - 2 devices */
|
/* SDVO ports have a single control bus - 2 devices */
|
||||||
dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
|
dinfo->output[i].type = INTELFB_OUTPUT_SDVO;
|
||||||
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
|
intelfb_setup_i2c_bus(dinfo, &dinfo->output[i].i2c_bus,
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
* intelfb
|
* intelfb
|
||||||
*
|
*
|
||||||
* Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G/915GM/
|
* Linux framebuffer driver for Intel(R) 830M/845G/852GM/855GM/865G/915G/915GM/
|
||||||
* 945G/945GM integrated graphics chips.
|
* 945G/945GM/965G/965GM integrated graphics chips.
|
||||||
*
|
*
|
||||||
* Copyright © 2002, 2003 David Dawes <dawes@xfree86.org>
|
* Copyright © 2002, 2003 David Dawes <dawes@xfree86.org>
|
||||||
* 2004 Sylvain Meyer
|
* 2004 Sylvain Meyer
|
||||||
|
@ -99,6 +99,9 @@
|
||||||
* Add vram option to reserve more memory than stolen by BIOS
|
* Add vram option to reserve more memory than stolen by BIOS
|
||||||
* Fix intelfbhw_pan_display typo
|
* Fix intelfbhw_pan_display typo
|
||||||
* Add __initdata annotations
|
* Add __initdata annotations
|
||||||
|
*
|
||||||
|
* 04/2008 - Version 0.9.5
|
||||||
|
* Add support for 965G/965GM. (Maik Broemme <mbroemme@plusserver.de>)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
@ -180,6 +183,8 @@ static struct pci_device_id intelfb_pci_table[] __devinitdata = {
|
||||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915GM },
|
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_915GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_915GM },
|
||||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945G },
|
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945G },
|
||||||
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945GM },
|
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_945GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_945GM },
|
||||||
|
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_965G, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_965G },
|
||||||
|
{ PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_965GM, PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_DISPLAY_VGA << 8, INTELFB_CLASS_MASK, INTEL_965GM },
|
||||||
{ 0, }
|
{ 0, }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -549,7 +554,10 @@ static int __devinit intelfb_pci_register(struct pci_dev *pdev,
|
||||||
if ((ent->device == PCI_DEVICE_ID_INTEL_915G) ||
|
if ((ent->device == PCI_DEVICE_ID_INTEL_915G) ||
|
||||||
(ent->device == PCI_DEVICE_ID_INTEL_915GM) ||
|
(ent->device == PCI_DEVICE_ID_INTEL_915GM) ||
|
||||||
(ent->device == PCI_DEVICE_ID_INTEL_945G) ||
|
(ent->device == PCI_DEVICE_ID_INTEL_945G) ||
|
||||||
(ent->device == PCI_DEVICE_ID_INTEL_945GM)) {
|
(ent->device == PCI_DEVICE_ID_INTEL_945GM) ||
|
||||||
|
(ent->device == PCI_DEVICE_ID_INTEL_965G) ||
|
||||||
|
(ent->device == PCI_DEVICE_ID_INTEL_965GM)) {
|
||||||
|
|
||||||
aperture_bar = 2;
|
aperture_bar = 2;
|
||||||
mmio_bar = 0;
|
mmio_bar = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,6 +143,18 @@ int intelfbhw_get_chipset(struct pci_dev *pdev, struct intelfb_info *dinfo)
|
||||||
dinfo->mobile = 1;
|
dinfo->mobile = 1;
|
||||||
dinfo->pll_index = PLLS_I9xx;
|
dinfo->pll_index = PLLS_I9xx;
|
||||||
return 0;
|
return 0;
|
||||||
|
case PCI_DEVICE_ID_INTEL_965G:
|
||||||
|
dinfo->name = "Intel(R) 965G";
|
||||||
|
dinfo->chipset = INTEL_965G;
|
||||||
|
dinfo->mobile = 0;
|
||||||
|
dinfo->pll_index = PLLS_I9xx;
|
||||||
|
return 0;
|
||||||
|
case PCI_DEVICE_ID_INTEL_965GM:
|
||||||
|
dinfo->name = "Intel(R) 965GM";
|
||||||
|
dinfo->chipset = INTEL_965GM;
|
||||||
|
dinfo->mobile = 1;
|
||||||
|
dinfo->pll_index = PLLS_I9xx;
|
||||||
|
return 0;
|
||||||
default:
|
default:
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -174,7 +186,9 @@ int intelfbhw_get_memory(struct pci_dev *pdev, int *aperture_size,
|
||||||
case PCI_DEVICE_ID_INTEL_915GM:
|
case PCI_DEVICE_ID_INTEL_915GM:
|
||||||
case PCI_DEVICE_ID_INTEL_945G:
|
case PCI_DEVICE_ID_INTEL_945G:
|
||||||
case PCI_DEVICE_ID_INTEL_945GM:
|
case PCI_DEVICE_ID_INTEL_945GM:
|
||||||
/* 915 and 945 chipsets support a 256MB aperture.
|
case PCI_DEVICE_ID_INTEL_965G:
|
||||||
|
case PCI_DEVICE_ID_INTEL_965GM:
|
||||||
|
/* 915, 945 and 965 chipsets support a 256MB aperture.
|
||||||
Aperture size is determined by inspected the
|
Aperture size is determined by inspected the
|
||||||
base address of the aperture. */
|
base address of the aperture. */
|
||||||
if (pci_resource_start(pdev, 2) & 0x08000000)
|
if (pci_resource_start(pdev, 2) & 0x08000000)
|
||||||
|
|
Loading…
Reference in a new issue