Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 41054
b: refs/heads/master
c: 7d915a3
h: refs/heads/master
v: v3
  • Loading branch information
Linus Torvalds committed Nov 22, 2006
1 parent a6bd123 commit 7dfc645
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 8 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: b42172fc7b569a0ef2b0fa38d71382969074c0e2
refs/heads/master: 7d915a38985d2826acbdc9dc9cca8a93e23e5278
31 changes: 24 additions & 7 deletions trunk/drivers/char/agp/intel-agp.c
Original file line number Diff line number Diff line change
Expand Up @@ -387,11 +387,7 @@ static void intel_i830_init_gtt_entries(void)
/* We obtain the size of the GTT, which is also stored (for some
* reason) at the top of stolen memory. Then we add 4KB to that
* for the video BIOS popup, which is also stored in there. */

if (IS_I965)
size = 512 + 4;
else
size = agp_bridge->driver->fetch_size() + 4;
size = agp_bridge->driver->fetch_size() + 4;

if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82830_HB ||
agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_82845G_HB) {
Expand Down Expand Up @@ -805,6 +801,26 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge)

return 0;
}

/*
* The i965 supports 36-bit physical addresses, but to keep
* the format of the GTT the same, the bits that don't fit
* in a 32-bit word are shifted down to bits 4..7.
*
* Gcc is smart enough to notice that "(addr >> 28) & 0xf0"
* is always zero on 32-bit architectures, so no need to make
* this conditional.
*/
static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge,
unsigned long addr, int type)
{
/* Shift high bits down */
addr |= (addr >> 28) & 0xf0;

/* Type checking must be done elsewhere */
return addr | bridge->driver->masks[type].mask;
}

static int intel_i965_fetch_size(void)
{
struct aper_size_info_fixed *values;
Expand Down Expand Up @@ -832,7 +848,8 @@ static int intel_i965_fetch_size(void)

agp_bridge->previous_size = agp_bridge->current_size = (void *)(values + offset);

return values[offset].size;
/* The i965 GTT is always sized as if it had a 512kB aperture size */
return 512;
}

/* The intel i965 automatically initializes the agp aperture during POST.
Expand Down Expand Up @@ -1584,7 +1601,7 @@ static struct agp_bridge_driver intel_i965_driver = {
.fetch_size = intel_i965_fetch_size,
.cleanup = intel_i915_cleanup,
.tlb_flush = intel_i810_tlbflush,
.mask_memory = intel_i810_mask_memory,
.mask_memory = intel_i965_mask_memory,
.masks = intel_i810_masks,
.agp_enable = intel_i810_agp_enable,
.cache_flush = global_cache_flush,
Expand Down

0 comments on commit 7dfc645

Please sign in to comment.