diff options
| author | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-12 21:53:04 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.osdl.org> | 2006-12-12 21:53:04 -0500 |
| commit | 3641b536ecc56f68fe182ac99f7ddc4827125118 (patch) | |
| tree | 8bb025f9e981588c09aeb13b1a7c117036c4e703 | |
| parent | b1ef951e8199d1c59f14dbe0fa22974ed57a3b48 (diff) | |
| parent | f0eef25339f92f7cd4aeea23d9ae97987a5a1e82 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart
* master.kernel.org:/pub/scm/linux/kernel/git/davej/agpgart:
[AGPGART] VIA and SiS AGP chipsets are x86-only
[AGPGART] agp-amd64: section mismatches with HOTPLUG=n
[AGPGART] Fix up misprogrammed bridges with incorrect AGPv2 rates.
| -rw-r--r-- | drivers/char/agp/Kconfig | 4 | ||||
| -rw-r--r-- | drivers/char/agp/generic.c | 25 |
2 files changed, 27 insertions, 2 deletions
diff --git a/drivers/char/agp/Kconfig b/drivers/char/agp/Kconfig index c603bf291580..a9f9c48c2424 100644 --- a/drivers/char/agp/Kconfig +++ b/drivers/char/agp/Kconfig | |||
| @@ -86,7 +86,7 @@ config AGP_NVIDIA | |||
| 86 | 86 | ||
| 87 | config AGP_SIS | 87 | config AGP_SIS |
| 88 | tristate "SiS chipset support" | 88 | tristate "SiS chipset support" |
| 89 | depends on AGP | 89 | depends on AGP && X86 |
| 90 | help | 90 | help |
| 91 | This option gives you AGP support for the GLX component of | 91 | This option gives you AGP support for the GLX component of |
| 92 | X on Silicon Integrated Systems [SiS] chipsets. | 92 | X on Silicon Integrated Systems [SiS] chipsets. |
| @@ -103,7 +103,7 @@ config AGP_SWORKS | |||
| 103 | 103 | ||
| 104 | config AGP_VIA | 104 | config AGP_VIA |
| 105 | tristate "VIA chipset support" | 105 | tristate "VIA chipset support" |
| 106 | depends on AGP | 106 | depends on AGP && X86 |
| 107 | help | 107 | help |
| 108 | This option gives you AGP support for the GLX component of | 108 | This option gives you AGP support for the GLX component of |
| 109 | X on VIA MVP3/Apollo Pro chipsets. | 109 | X on VIA MVP3/Apollo Pro chipsets. |
diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index 5ff457b41efb..883a36a27833 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c | |||
| @@ -419,6 +419,31 @@ static void agp_v2_parse_one(u32 *requested_mode, u32 *bridge_agpstat, u32 *vga_ | |||
| 419 | *requested_mode &= ~AGP2_RESERVED_MASK; | 419 | *requested_mode &= ~AGP2_RESERVED_MASK; |
| 420 | } | 420 | } |
| 421 | 421 | ||
| 422 | /* | ||
| 423 | * Some dumb bridges are programmed to disobey the AGP2 spec. | ||
| 424 | * This is likely a BIOS misprogramming rather than poweron default, or | ||
| 425 | * it would be a lot more common. | ||
| 426 | * https://bugs.freedesktop.org/show_bug.cgi?id=8816 | ||
| 427 | * AGPv2 spec 6.1.9 states: | ||
| 428 | * The RATE field indicates the data transfer rates supported by this | ||
| 429 | * device. A.G.P. devices must report all that apply. | ||
| 430 | * Fix them up as best we can. | ||
| 431 | */ | ||
| 432 | switch (*bridge_agpstat & 7) { | ||
| 433 | case 4: | ||
| 434 | *bridge_agpstat |= (AGPSTAT2_2X | AGPSTAT2_1X); | ||
| 435 | printk(KERN_INFO PFX "BIOS bug. AGP bridge claims to only support x4 rate" | ||
| 436 | "Fixing up support for x2 & x1\n"); | ||
| 437 | break; | ||
| 438 | case 2: | ||
| 439 | *bridge_agpstat |= AGPSTAT2_1X; | ||
| 440 | printk(KERN_INFO PFX "BIOS bug. AGP bridge claims to only support x2 rate" | ||
| 441 | "Fixing up support for x1\n"); | ||
| 442 | break; | ||
| 443 | default: | ||
| 444 | break; | ||
| 445 | } | ||
| 446 | |||
| 422 | /* Check the speed bits make sense. Only one should be set. */ | 447 | /* Check the speed bits make sense. Only one should be set. */ |
| 423 | tmp = *requested_mode & 7; | 448 | tmp = *requested_mode & 7; |
| 424 | switch (tmp) { | 449 | switch (tmp) { |
