Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 218187
b: refs/heads/master
c: 71d0618
h: refs/heads/master
i:
  218185: ecb2255
  218183: f00cd1c
v: v3
  • Loading branch information
Francisco Jerez authored and Ben Skeggs committed Sep 24, 2010
1 parent ad55df3 commit 5acd043
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 3bc14b4dca2f8bc088162476279480e78491fd83
refs/heads/master: 71d0618661f9dd531caa94ce2ce5dc919321624b
21 changes: 19 additions & 2 deletions trunk/drivers/gpu/drm/nouveau/nouveau_mem.c
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,23 @@ nouveau_mem_detect(struct drm_device *dev)
return -ENOMEM;
}

#if __OS_HAS_AGP
static unsigned long
get_agp_mode(struct drm_device *dev, unsigned long mode)
{
struct drm_nouveau_private *dev_priv = dev->dev_private;

/*
* FW seems to be broken on nv18, it makes the card lock up
* randomly.
*/
if (dev_priv->chipset == 0x18)
mode &= ~PCI_AGP_COMMAND_FW;

return mode;
}
#endif

int
nouveau_mem_reset_agp(struct drm_device *dev)
{
Expand All @@ -436,7 +453,7 @@ nouveau_mem_reset_agp(struct drm_device *dev)
if (ret)
return ret;

mode.mode = info.mode & ~PCI_AGP_COMMAND_FW;
mode.mode = get_agp_mode(dev, info.mode) & ~PCI_AGP_COMMAND_FW;
ret = drm_agp_enable(dev, mode);
if (ret)
return ret;
Expand Down Expand Up @@ -491,7 +508,7 @@ nouveau_mem_init_agp(struct drm_device *dev)
}

/* see agp.h for the AGPSTAT_* modes available */
mode.mode = info.mode;
mode.mode = get_agp_mode(dev, info.mode);
ret = drm_agp_enable(dev, mode);
if (ret) {
NV_ERROR(dev, "Unable to enable AGP: %d\n", ret);
Expand Down

0 comments on commit 5acd043

Please sign in to comment.