Commit 7cfd5e55 authored by Dave Jones's avatar Dave Jones

[AGPGART] First step towards multiple AGP buses.

  
The AGP3 spec allows for >1 AGP bus. This is the first of several patches
from Jeff Hartmann towards a context-using agp_bridge, by replacing
agp_bridge.foo accesses with agp_bridge->foo accesses. For now, there
should be no functional differences, as there is still only a single
agp_bridge_data struct defined.
parent 0cdfb6c9
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
#include <asm/agp.h> /* for flush_agp_cache() */ #include <asm/agp.h> /* for flush_agp_cache() */
extern struct agp_bridge_data agp_bridge; extern struct agp_bridge_data *agp_bridge;
#define PFX "agpgart: " #define PFX "agpgart: "
...@@ -166,20 +166,20 @@ struct agp_bridge_data { ...@@ -166,20 +166,20 @@ struct agp_bridge_data {
#define MB(x) (KB (KB (x))) #define MB(x) (KB (KB (x)))
#define GB(x) (MB (KB (x))) #define GB(x) (MB (KB (x)))
#define CACHE_FLUSH agp_bridge.cache_flush #define CACHE_FLUSH agp_bridge->cache_flush
#define A_SIZE_8(x) ((struct aper_size_info_8 *) x) #define A_SIZE_8(x) ((struct aper_size_info_8 *) x)
#define A_SIZE_16(x) ((struct aper_size_info_16 *) x) #define A_SIZE_16(x) ((struct aper_size_info_16 *) x)
#define A_SIZE_32(x) ((struct aper_size_info_32 *) x) #define A_SIZE_32(x) ((struct aper_size_info_32 *) x)
#define A_SIZE_LVL2(x) ((struct aper_size_info_lvl2 *) x) #define A_SIZE_LVL2(x) ((struct aper_size_info_lvl2 *) x)
#define A_SIZE_FIX(x) ((struct aper_size_info_fixed *) x) #define A_SIZE_FIX(x) ((struct aper_size_info_fixed *) x)
#define A_IDX8() (A_SIZE_8(agp_bridge.aperture_sizes) + i) #define A_IDX8() (A_SIZE_8(agp_bridge->aperture_sizes) + i)
#define A_IDX16() (A_SIZE_16(agp_bridge.aperture_sizes) + i) #define A_IDX16() (A_SIZE_16(agp_bridge->aperture_sizes) + i)
#define A_IDX32() (A_SIZE_32(agp_bridge.aperture_sizes) + i) #define A_IDX32() (A_SIZE_32(agp_bridge->aperture_sizes) + i)
#define A_IDXLVL2() (A_SIZE_LVL2(agp_bridge.aperture_sizes) + i) #define A_IDXLVL2() (A_SIZE_LVL2(agp_bridge->aperture_sizes) + i)
#define A_IDXFIX() (A_SIZE_FIX(agp_bridge.aperture_sizes) + i) #define A_IDXFIX() (A_SIZE_FIX(agp_bridge->aperture_sizes) + i)
#define MAXKEY (4096 * 32) #define MAXKEY (4096 * 32)
#define PGE_EMPTY(p) (!(p) || (p) == (unsigned long) agp_bridge.scratch_page) #define PGE_EMPTY(p) (!(p) || (p) == (unsigned long) agp_bridge->scratch_page)
/* intel register */ /* intel register */
#define INTEL_APBASE 0x10 #define INTEL_APBASE 0x10
......
...@@ -17,15 +17,15 @@ static int ali_fetch_size(void) ...@@ -17,15 +17,15 @@ static int ali_fetch_size(void)
u32 temp; u32 temp;
struct aper_size_info_32 *values; struct aper_size_info_32 *values;
pci_read_config_dword(agp_bridge.dev, ALI_ATTBASE, &temp); pci_read_config_dword(agp_bridge->dev, ALI_ATTBASE, &temp);
temp &= ~(0xfffffff0); temp &= ~(0xfffffff0);
values = A_SIZE_32(agp_bridge.aperture_sizes); values = A_SIZE_32(agp_bridge->aperture_sizes);
for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { for (i = 0; i < agp_bridge->num_aperture_sizes; i++) {
if (temp == values[i].size_value) { if (temp == values[i].size_value) {
agp_bridge.previous_size = agp_bridge->previous_size =
agp_bridge.current_size = (void *) (values + i); agp_bridge->current_size = (void *) (values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -37,9 +37,9 @@ static void ali_tlbflush(agp_memory * mem) ...@@ -37,9 +37,9 @@ static void ali_tlbflush(agp_memory * mem)
{ {
u32 temp; u32 temp;
pci_read_config_dword(agp_bridge.dev, ALI_TLBCTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_TLBCTRL, &temp);
// clear tag // clear tag
pci_write_config_dword(agp_bridge.dev, ALI_TAGCTRL, pci_write_config_dword(agp_bridge->dev, ALI_TAGCTRL,
((temp & 0xfffffff0) | 0x00000001|0x00000002)); ((temp & 0xfffffff0) | 0x00000001|0x00000002));
} }
...@@ -48,15 +48,15 @@ static void ali_cleanup(void) ...@@ -48,15 +48,15 @@ static void ali_cleanup(void)
struct aper_size_info_32 *previous_size; struct aper_size_info_32 *previous_size;
u32 temp; u32 temp;
previous_size = A_SIZE_32(agp_bridge.previous_size); previous_size = A_SIZE_32(agp_bridge->previous_size);
pci_read_config_dword(agp_bridge.dev, ALI_TLBCTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_TLBCTRL, &temp);
// clear tag // clear tag
pci_write_config_dword(agp_bridge.dev, ALI_TAGCTRL, pci_write_config_dword(agp_bridge->dev, ALI_TAGCTRL,
((temp & 0xffffff00) | 0x00000001|0x00000002)); ((temp & 0xffffff00) | 0x00000001|0x00000002));
pci_read_config_dword(agp_bridge.dev, ALI_ATTBASE, &temp); pci_read_config_dword(agp_bridge->dev, ALI_ATTBASE, &temp);
pci_write_config_dword(agp_bridge.dev, ALI_ATTBASE, pci_write_config_dword(agp_bridge->dev, ALI_ATTBASE,
((temp & 0x00000ff0) | previous_size->size_value)); ((temp & 0x00000ff0) | previous_size->size_value));
} }
...@@ -65,24 +65,24 @@ static int ali_configure(void) ...@@ -65,24 +65,24 @@ static int ali_configure(void)
u32 temp; u32 temp;
struct aper_size_info_32 *current_size; struct aper_size_info_32 *current_size;
current_size = A_SIZE_32(agp_bridge.current_size); current_size = A_SIZE_32(agp_bridge->current_size);
/* aperture size and gatt addr */ /* aperture size and gatt addr */
pci_read_config_dword(agp_bridge.dev, ALI_ATTBASE, &temp); pci_read_config_dword(agp_bridge->dev, ALI_ATTBASE, &temp);
temp = (((temp & 0x00000ff0) | (agp_bridge.gatt_bus_addr & 0xfffff000)) temp = (((temp & 0x00000ff0) | (agp_bridge->gatt_bus_addr & 0xfffff000))
| (current_size->size_value & 0xf)); | (current_size->size_value & 0xf));
pci_write_config_dword(agp_bridge.dev, ALI_ATTBASE, temp); pci_write_config_dword(agp_bridge->dev, ALI_ATTBASE, temp);
/* tlb control */ /* tlb control */
pci_read_config_dword(agp_bridge.dev, ALI_TLBCTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_TLBCTRL, &temp);
pci_write_config_dword(agp_bridge.dev, ALI_TLBCTRL, ((temp & 0xffffff00) | 0x00000010)); pci_write_config_dword(agp_bridge->dev, ALI_TLBCTRL, ((temp & 0xffffff00) | 0x00000010));
/* address to map to */ /* address to map to */
pci_read_config_dword(agp_bridge.dev, ALI_APBASE, &temp); pci_read_config_dword(agp_bridge->dev, ALI_APBASE, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
#if 0 #if 0
if (agp_bridge.type == ALI_M1541) { if (agp_bridge->type == ALI_M1541) {
u32 nlvm_addr = 0; u32 nlvm_addr = 0;
switch (current_size->size_value) { switch (current_size->size_value) {
...@@ -101,15 +101,15 @@ static int ali_configure(void) ...@@ -101,15 +101,15 @@ static int ali_configure(void)
nlvm_addr--; nlvm_addr--;
nlvm_addr&=0xfff00000; nlvm_addr&=0xfff00000;
nlvm_addr+= agp_bridge.gart_bus_addr; nlvm_addr+= agp_bridge->gart_bus_addr;
nlvm_addr|=(agp_bridge.gart_bus_addr>>12); nlvm_addr|=(agp_bridge->gart_bus_addr>>12);
printk(KERN_INFO PFX "nlvm top &base = %8x\n",nlvm_addr); printk(KERN_INFO PFX "nlvm top &base = %8x\n",nlvm_addr);
} }
#endif #endif
pci_read_config_dword(agp_bridge.dev, ALI_TLBCTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_TLBCTRL, &temp);
temp &= 0xffffff7f; //enable TLB temp &= 0xffffff7f; //enable TLB
pci_write_config_dword(agp_bridge.dev, ALI_TLBCTRL, temp); pci_write_config_dword(agp_bridge->dev, ALI_TLBCTRL, temp);
return 0; return 0;
} }
...@@ -118,23 +118,23 @@ static unsigned long ali_mask_memory(unsigned long addr, int type) ...@@ -118,23 +118,23 @@ static unsigned long ali_mask_memory(unsigned long addr, int type)
{ {
/* Memory type is ignored */ /* Memory type is ignored */
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
static void ali_cache_flush(void) static void ali_cache_flush(void)
{ {
global_cache_flush(); global_cache_flush();
if (agp_bridge.type == ALI_M1541) { if (agp_bridge->type == ALI_M1541) {
int i, page_count; int i, page_count;
u32 temp; u32 temp;
page_count = 1 << A_SIZE_32(agp_bridge.current_size)->page_order; page_count = 1 << A_SIZE_32(agp_bridge->current_size)->page_order;
for (i = 0; i < PAGE_SIZE * page_count; i += PAGE_SIZE) { for (i = 0; i < PAGE_SIZE * page_count; i += PAGE_SIZE) {
pci_read_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp);
pci_write_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL,
(((temp & ALI_CACHE_FLUSH_ADDR_MASK) | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) |
(agp_bridge.gatt_bus_addr + i)) | (agp_bridge->gatt_bus_addr + i)) |
ALI_CACHE_FLUSH_EN)); ALI_CACHE_FLUSH_EN));
} }
} }
...@@ -148,9 +148,9 @@ static void *ali_alloc_page(void) ...@@ -148,9 +148,9 @@ static void *ali_alloc_page(void)
if (adr == 0) if (adr == 0)
return 0; return 0;
if (agp_bridge.type == ALI_M1541) { if (agp_bridge->type == ALI_M1541) {
pci_read_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp);
pci_write_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL,
(((temp & ALI_CACHE_FLUSH_ADDR_MASK) | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) |
virt_to_phys(adr)) | virt_to_phys(adr)) |
ALI_CACHE_FLUSH_EN )); ALI_CACHE_FLUSH_EN ));
...@@ -167,9 +167,9 @@ static void ali_destroy_page(void * addr) ...@@ -167,9 +167,9 @@ static void ali_destroy_page(void * addr)
global_cache_flush(); global_cache_flush();
if (agp_bridge.type == ALI_M1541) { if (agp_bridge->type == ALI_M1541) {
pci_read_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, &temp); pci_read_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL, &temp);
pci_write_config_dword(agp_bridge.dev, ALI_CACHE_FLUSH_CTRL, pci_write_config_dword(agp_bridge->dev, ALI_CACHE_FLUSH_CTRL,
(((temp & ALI_CACHE_FLUSH_ADDR_MASK) | (((temp & ALI_CACHE_FLUSH_ADDR_MASK) |
virt_to_phys(addr)) | virt_to_phys(addr)) |
ALI_CACHE_FLUSH_EN)); ALI_CACHE_FLUSH_EN));
...@@ -197,30 +197,30 @@ static struct aper_size_info_32 ali_generic_sizes[7] = ...@@ -197,30 +197,30 @@ static struct aper_size_info_32 ali_generic_sizes[7] =
static int __init ali_generic_setup (struct pci_dev *pdev) static int __init ali_generic_setup (struct pci_dev *pdev)
{ {
agp_bridge.masks = ali_generic_masks; agp_bridge->masks = ali_generic_masks;
agp_bridge.aperture_sizes = (void *) ali_generic_sizes; agp_bridge->aperture_sizes = (void *) ali_generic_sizes;
agp_bridge.size_type = U32_APER_SIZE; agp_bridge->size_type = U32_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = ali_configure; agp_bridge->configure = ali_configure;
agp_bridge.fetch_size = ali_fetch_size; agp_bridge->fetch_size = ali_fetch_size;
agp_bridge.cleanup = ali_cleanup; agp_bridge->cleanup = ali_cleanup;
agp_bridge.tlb_flush = ali_tlbflush; agp_bridge->tlb_flush = ali_tlbflush;
agp_bridge.mask_memory = ali_mask_memory; agp_bridge->mask_memory = ali_mask_memory;
agp_bridge.agp_enable = agp_generic_agp_enable; agp_bridge->agp_enable = agp_generic_agp_enable;
agp_bridge.cache_flush = ali_cache_flush; agp_bridge->cache_flush = ali_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = agp_generic_insert_memory; agp_bridge->insert_memory = agp_generic_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = ali_alloc_page; agp_bridge->agp_alloc_page = ali_alloc_page;
agp_bridge.agp_destroy_page = ali_destroy_page; agp_bridge->agp_destroy_page = ali_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
return 0; return 0;
} }
...@@ -313,7 +313,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -313,7 +313,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
printk (KERN_INFO PFX "Detected ALi %s chipset\n", printk (KERN_INFO PFX "Detected ALi %s chipset\n",
devs[j].chipset_name); devs[j].chipset_name);
agp_bridge.type = devs[j].chipset; agp_bridge->type = devs[j].chipset;
if (devs[j].chipset_setup != NULL) if (devs[j].chipset_setup != NULL)
return devs[j].chipset_setup(pdev); return devs[j].chipset_setup(pdev);
...@@ -327,7 +327,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -327,7 +327,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
if (agp_try_unsupported) { if (agp_try_unsupported) {
printk(KERN_WARNING PFX "Trying generic ALi routines" printk(KERN_WARNING PFX "Trying generic ALi routines"
" for device id: %04x\n", pdev->device); " for device id: %04x\n", pdev->device);
agp_bridge.type = ALI_GENERIC; agp_bridge->type = ALI_GENERIC;
return ali_generic_setup(pdev); return ali_generic_setup(pdev);
} }
...@@ -350,10 +350,10 @@ static int __init agp_ali_probe (struct pci_dev *dev, const struct pci_device_id ...@@ -350,10 +350,10 @@ static int __init agp_ali_probe (struct pci_dev *dev, const struct pci_device_id
/* probe for known chipsets */ /* probe for known chipsets */
if (agp_lookup_host_bridge(dev) != -ENODEV) { if (agp_lookup_host_bridge(dev) != -ENODEV) {
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode);
ali_agp_driver.dev = dev; ali_agp_driver.dev = dev;
agp_register_driver(&ali_agp_driver); agp_register_driver(&ali_agp_driver);
return 0; return 0;
...@@ -387,7 +387,7 @@ static int __init agp_ali_init(void) ...@@ -387,7 +387,7 @@ static int __init agp_ali_init(void)
ret_val = pci_module_init(&agp_ali_pci_driver); ret_val = pci_module_init(&agp_ali_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
...@@ -15,7 +15,7 @@ static struct page *alpha_core_agp_vm_nopage(struct vm_area_struct *vma, ...@@ -15,7 +15,7 @@ static struct page *alpha_core_agp_vm_nopage(struct vm_area_struct *vma,
unsigned long address, unsigned long address,
int write_access) int write_access)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
dma_addr_t dma_addr; dma_addr_t dma_addr;
unsigned long pa; unsigned long pa;
struct page *page; struct page *page;
...@@ -60,33 +60,33 @@ static int alpha_core_agp_fetch_size(void) ...@@ -60,33 +60,33 @@ static int alpha_core_agp_fetch_size(void)
static int alpha_core_agp_configure(void) static int alpha_core_agp_configure(void)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
agp_bridge.gart_bus_addr = agp->aperture.bus_base; agp_bridge->gart_bus_addr = agp->aperture.bus_base;
return 0; return 0;
} }
static void alpha_core_agp_cleanup(void) static void alpha_core_agp_cleanup(void)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
agp->ops->cleanup(agp); agp->ops->cleanup(agp);
} }
static void alpha_core_agp_tlbflush(agp_memory *mem) static void alpha_core_agp_tlbflush(agp_memory *mem)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
alpha_mv.mv_pci_tbi(agp->hose, 0, -1); alpha_mv.mv_pci_tbi(agp->hose, 0, -1);
} }
static unsigned long alpha_core_agp_mask_memory(unsigned long addr, int type) static unsigned long alpha_core_agp_mask_memory(unsigned long addr, int type)
{ {
/* Memory type is ignored */ /* Memory type is ignored */
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
static void alpha_core_agp_enable(u32 mode) static void alpha_core_agp_enable(u32 mode)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
agp->mode.lw = agp_collect_device_status(mode, agp->capability.lw); agp->mode.lw = agp_collect_device_status(mode, agp->capability.lw);
...@@ -99,17 +99,17 @@ static void alpha_core_agp_enable(u32 mode) ...@@ -99,17 +99,17 @@ static void alpha_core_agp_enable(u32 mode)
static int alpha_core_agp_insert_memory(agp_memory *mem, off_t pg_start, static int alpha_core_agp_insert_memory(agp_memory *mem, off_t pg_start,
int type) int type)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
int num_entries, status; int num_entries, status;
void *temp; void *temp;
temp = agp_bridge.current_size; temp = agp_bridge->current_size;
num_entries = A_SIZE_FIX(temp)->num_entries; num_entries = A_SIZE_FIX(temp)->num_entries;
if ((pg_start + mem->page_count) > num_entries) return -EINVAL; if ((pg_start + mem->page_count) > num_entries) return -EINVAL;
status = agp->ops->bind(agp, pg_start, mem); status = agp->ops->bind(agp, pg_start, mem);
mb(); mb();
agp_bridge.tlb_flush(mem); agp_bridge->tlb_flush(mem);
return status; return status;
} }
...@@ -117,11 +117,11 @@ static int alpha_core_agp_insert_memory(agp_memory *mem, off_t pg_start, ...@@ -117,11 +117,11 @@ static int alpha_core_agp_insert_memory(agp_memory *mem, off_t pg_start,
static int alpha_core_agp_remove_memory(agp_memory *mem, off_t pg_start, static int alpha_core_agp_remove_memory(agp_memory *mem, off_t pg_start,
int type) int type)
{ {
alpha_agp_info *agp = agp_bridge.dev_private_data; alpha_agp_info *agp = agp_bridge->dev_private_data;
int status; int status;
status = agp->ops->unbind(agp, pg_start, mem); status = agp->ops->unbind(agp, pg_start, mem);
agp_bridge.tlb_flush(mem); agp_bridge->tlb_flush(mem);
return status; return status;
} }
...@@ -151,43 +151,43 @@ alpha_core_agp_setup(void) ...@@ -151,43 +151,43 @@ alpha_core_agp_setup(void)
/* /*
* Build a fake pci_dev struct * Build a fake pci_dev struct
*/ */
if (!(agp_bridge.dev = kmalloc(sizeof(struct pci_dev), GFP_KERNEL))) { if (!(agp_bridge->dev = kmalloc(sizeof(struct pci_dev), GFP_KERNEL))) {
return -ENOMEM; return -ENOMEM;
} }
agp_bridge.dev->vendor = 0xffff; agp_bridge->dev->vendor = 0xffff;
agp_bridge.dev->device = 0xffff; agp_bridge->dev->device = 0xffff;
agp_bridge.dev->sysdata = agp->hose; agp_bridge->dev->sysdata = agp->hose;
/* /*
* Fill in the rest of the agp_bridge struct * Fill in the rest of the agp_bridge struct
*/ */
agp_bridge.masks = alpha_core_agp_masks; agp_bridge->masks = alpha_core_agp_masks;
agp_bridge.aperture_sizes = aper_size; agp_bridge->aperture_sizes = aper_size;
agp_bridge.current_size = aper_size; /* only one entry */ agp_bridge->current_size = aper_size; /* only one entry */
agp_bridge.size_type = FIXED_APER_SIZE; agp_bridge->size_type = FIXED_APER_SIZE;
agp_bridge.num_aperture_sizes = 1; agp_bridge->num_aperture_sizes = 1;
agp_bridge.dev_private_data = agp; agp_bridge->dev_private_data = agp;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = alpha_core_agp_configure; agp_bridge->configure = alpha_core_agp_configure;
agp_bridge.fetch_size = alpha_core_agp_fetch_size; agp_bridge->fetch_size = alpha_core_agp_fetch_size;
agp_bridge.cleanup = alpha_core_agp_cleanup; agp_bridge->cleanup = alpha_core_agp_cleanup;
agp_bridge.tlb_flush = alpha_core_agp_tlbflush; agp_bridge->tlb_flush = alpha_core_agp_tlbflush;
agp_bridge.mask_memory = alpha_core_agp_mask_memory; agp_bridge->mask_memory = alpha_core_agp_mask_memory;
agp_bridge.agp_enable = alpha_core_agp_enable; agp_bridge->agp_enable = alpha_core_agp_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = alpha_core_agp_nop; agp_bridge->create_gatt_table = alpha_core_agp_nop;
agp_bridge.free_gatt_table = alpha_core_agp_nop; agp_bridge->free_gatt_table = alpha_core_agp_nop;
agp_bridge.insert_memory = alpha_core_agp_insert_memory; agp_bridge->insert_memory = alpha_core_agp_insert_memory;
agp_bridge.remove_memory = alpha_core_agp_remove_memory; agp_bridge->remove_memory = alpha_core_agp_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.mode = agp->capability.lw; agp_bridge->mode = agp->capability.lw;
agp_bridge.cant_use_aperture = 1; agp_bridge->cant_use_aperture = 1;
agp_bridge.vm_ops = &alpha_core_agp_vm_ops; agp_bridgevm_ops = &alpha_core_agp_vm_ops;
alpha_core_agp_driver.dev = agp_bridge.dev; alpha_core_agp_driver.dev = agp_bridge->dev;
agp_register_driver(&alpha_core_agp_driver); agp_register_driver(&alpha_core_agp_driver);
printk(KERN_INFO "Detected AGP on hose %d\n", agp->hose->index); printk(KERN_INFO "Detected AGP on hose %d\n", agp->hose->index);
return 0; return 0;
...@@ -197,7 +197,7 @@ static int __init agp_alpha_core_init(void) ...@@ -197,7 +197,7 @@ static int __init agp_alpha_core_init(void)
{ {
int ret_val = -ENODEV; int ret_val = -ENODEV;
if (alpha_mv.agp_info) { if (alpha_mv.agp_info) {
agp_bridge.type = ALPHA_CORE_AGP; agp_bridge->type = ALPHA_CORE_AGP;
ret_val = alpha_core_agp_setup(); ret_val = alpha_core_agp_setup();
} }
......
This diff is collapsed.
...@@ -70,7 +70,7 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type) ...@@ -70,7 +70,7 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type)
/* gatt table should be empty. */ /* gatt table should be empty. */
while (j < (pg_start + mem->page_count)) { while (j < (pg_start + mem->page_count)) {
if (!PGE_EMPTY(agp_bridge.gatt_table[j])) if (!PGE_EMPTY(agp_bridge->gatt_table[j]))
return -EBUSY; return -EBUSY;
j++; j++;
} }
...@@ -81,7 +81,7 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type) ...@@ -81,7 +81,7 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type)
} }
for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {
addr = agp_bridge.mask_memory(mem->memory[i], mem->type); addr = agp_bridge->mask_memory(mem->memory[i], mem->type);
tmp = addr; tmp = addr;
BUG_ON(tmp & 0xffffff0000000ffc); BUG_ON(tmp & 0xffffff0000000ffc);
...@@ -89,9 +89,9 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type) ...@@ -89,9 +89,9 @@ static int x86_64_insert_memory(agp_memory * mem, off_t pg_start, int type)
pte |=(tmp & 0x00000000fffff000); pte |=(tmp & 0x00000000fffff000);
pte |= 1<<1|1<<0; pte |= 1<<1|1<<0;
agp_bridge.gatt_table[j] = pte; agp_bridge->gatt_table[j] = pte;
} }
agp_bridge.tlb_flush(mem); agp_bridge->tlb_flush(mem);
return 0; return 0;
} }
...@@ -134,12 +134,12 @@ static int amd_x86_64_fetch_size(void) ...@@ -134,12 +134,12 @@ static int amd_x86_64_fetch_size(void)
temp = (temp & 0xe); temp = (temp & 0xe);
values = A_SIZE_32(x86_64_aperture_sizes); values = A_SIZE_32(x86_64_aperture_sizes);
for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { for (i = 0; i < agp_bridge->num_aperture_sizes; i++) {
if (temp == values[i].size_value) { if (temp == values[i].size_value) {
agp_bridge.previous_size = agp_bridge->previous_size =
agp_bridge.current_size = (void *) (values + i); agp_bridge->current_size = (void *) (values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -225,14 +225,14 @@ static int amd_8151_configure(void) ...@@ -225,14 +225,14 @@ static int amd_8151_configure(void)
int current_size; int current_size;
int tmp, tmp2, i; int tmp, tmp2, i;
u64 aperbar; u64 aperbar;
unsigned long gatt_bus = virt_to_phys(agp_bridge.gatt_table_real); unsigned long gatt_bus = virt_to_phys(agp_bridge->gatt_table_real);
/* Configure AGP regs in each x86-64 host bridge. */ /* Configure AGP regs in each x86-64 host bridge. */
pci_for_each_dev(dev) { pci_for_each_dev(dev) {
if (dev->bus->number==0 && if (dev->bus->number==0 &&
PCI_FUNC(dev->devfn)==3 && PCI_FUNC(dev->devfn)==3 &&
PCI_SLOT(dev->devfn)>=24 && PCI_SLOT(dev->devfn)<=31) { PCI_SLOT(dev->devfn)>=24 && PCI_SLOT(dev->devfn)<=31) {
agp_bridge.gart_bus_addr = amd_x86_64_configure(dev,gatt_bus); agp_bridge->gart_bus_addr = amd_x86_64_configure(dev,gatt_bus);
hammer = dev; hammer = dev;
/* /*
...@@ -248,7 +248,7 @@ static int amd_8151_configure(void) ...@@ -248,7 +248,7 @@ static int amd_8151_configure(void)
/* Shadow x86-64 registers into 8151 registers. */ /* Shadow x86-64 registers into 8151 registers. */
dev = agp_bridge.dev; dev = agp_bridge->dev;
if (!dev) if (!dev)
return -ENODEV; return -ENODEV;
...@@ -315,7 +315,7 @@ static void amd_8151_cleanup(void) ...@@ -315,7 +315,7 @@ static void amd_8151_cleanup(void)
static unsigned long amd_8151_mask_memory(unsigned long addr, int type) static unsigned long amd_8151_mask_memory(unsigned long addr, int type)
{ {
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
...@@ -368,12 +368,12 @@ static void agp_x86_64_agp_enable(u32 mode) ...@@ -368,12 +368,12 @@ static void agp_x86_64_agp_enable(u32 mode)
} }
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &command); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &command);
command = agp_collect_device_status(mode, command); command = agp_collect_device_status(mode, command);
command |= 0x100; command |= 0x100;
pci_write_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_COMMAND, command); pci_write_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_COMMAND, command);
agp_device_command(command, 1); agp_device_command(command, 1);
} }
...@@ -381,30 +381,30 @@ static void agp_x86_64_agp_enable(u32 mode) ...@@ -381,30 +381,30 @@ static void agp_x86_64_agp_enable(u32 mode)
static int __init amd_8151_setup (struct pci_dev *pdev) static int __init amd_8151_setup (struct pci_dev *pdev)
{ {
agp_bridge.masks = amd_8151_masks; agp_bridge->masks = amd_8151_masks;
agp_bridge.aperture_sizes = (void *) amd_8151_sizes; agp_bridge->aperture_sizes = (void *) amd_8151_sizes;
agp_bridge.size_type = U32_APER_SIZE; agp_bridge->size_type = U32_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = amd_8151_configure; agp_bridge->configure = amd_8151_configure;
agp_bridge.fetch_size = amd_x86_64_fetch_size; agp_bridge->fetch_size = amd_x86_64_fetch_size;
agp_bridge.cleanup = amd_8151_cleanup; agp_bridge->cleanup = amd_8151_cleanup;
agp_bridge.tlb_flush = amd_x86_64_tlbflush; agp_bridge->tlb_flush = amd_x86_64_tlbflush;
agp_bridge.mask_memory = amd_8151_mask_memory; agp_bridge->mask_memory = amd_8151_mask_memory;
agp_bridge.agp_enable = agp_x86_64_agp_enable; agp_bridge->agp_enable = agp_x86_64_agp_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = x86_64_insert_memory; agp_bridge->insert_memory = x86_64_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
return 0; return 0;
} }
...@@ -420,11 +420,11 @@ static int __init agp_amdk8_probe (struct pci_dev *dev, const struct pci_device_ ...@@ -420,11 +420,11 @@ static int __init agp_amdk8_probe (struct pci_dev *dev, const struct pci_device_
if (cap_ptr == 0) if (cap_ptr == 0)
return -ENODEV; return -ENODEV;
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode);
amd_8151_setup(dev); amd_8151_setup(dev);
amd_k8_agp_driver.dev = dev; amd_k8_agp_driver.dev = dev;
agp_register_driver(&amd_k8_agp_driver); agp_register_driver(&amd_k8_agp_driver);
...@@ -458,9 +458,9 @@ int __init agp_amdk8_init(void) ...@@ -458,9 +458,9 @@ int __init agp_amdk8_init(void)
ret_val = pci_module_init(&agp_amdk8_pci_driver); ret_val = pci_module_init(&agp_amdk8_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
agp_bridge.type = AMD_8151; agp_bridge->type = AMD_8151;
return ret_val; return ret_val;
} }
......
...@@ -44,26 +44,27 @@ ...@@ -44,26 +44,27 @@
#define AGPGART_VERSION_MAJOR 0 #define AGPGART_VERSION_MAJOR 0
#define AGPGART_VERSION_MINOR 100 #define AGPGART_VERSION_MINOR 100
struct agp_bridge_data agp_bridge = { .type = NOT_SUPPORTED }; struct agp_bridge_data agp_bridge_dummy = { .type = NOT_SUPPORTED };
struct agp_bridge_data *agp_bridge = &agp_bridge_dummy;
int agp_backend_acquire(void) int agp_backend_acquire(void)
{ {
if (agp_bridge.type == NOT_SUPPORTED) if (agp_bridge->type == NOT_SUPPORTED)
return -EINVAL; return -EINVAL;
if (atomic_read(&agp_bridge.agp_in_use) != 0) if (atomic_read(&agp_bridge->agp_in_use) != 0)
return -EBUSY; return -EBUSY;
atomic_inc(&agp_bridge.agp_in_use); atomic_inc(&agp_bridge->agp_in_use);
return 0; return 0;
} }
void agp_backend_release(void) void agp_backend_release(void)
{ {
if (agp_bridge.type == NOT_SUPPORTED) if (agp_bridge->type == NOT_SUPPORTED)
return; return;
atomic_dec(&agp_bridge.agp_in_use); atomic_dec(&agp_bridge->agp_in_use);
} }
struct agp_max_table { struct agp_max_table {
...@@ -114,38 +115,38 @@ static int agp_backend_initialize(struct pci_dev *dev) ...@@ -114,38 +115,38 @@ static int agp_backend_initialize(struct pci_dev *dev)
{ {
int size_value, rc, got_gatt=0, got_keylist=0; int size_value, rc, got_gatt=0, got_keylist=0;
agp_bridge.max_memory_agp = agp_find_max(); agp_bridge->max_memory_agp = agp_find_max();
agp_bridge.version = &agp_current_version; agp_bridge->version = &agp_current_version;
if (agp_bridge.needs_scratch_page == TRUE) { if (agp_bridge->needs_scratch_page == TRUE) {
void *addr; void *addr;
addr = agp_bridge.agp_alloc_page(); addr = agp_bridge->agp_alloc_page();
if (addr == NULL) { if (addr == NULL) {
printk(KERN_ERR PFX "unable to get memory for scratch page.\n"); printk(KERN_ERR PFX "unable to get memory for scratch page.\n");
return -ENOMEM; return -ENOMEM;
} }
agp_bridge.scratch_page_real = virt_to_phys(addr); agp_bridge->scratch_page_real = virt_to_phys(addr);
agp_bridge.scratch_page = agp_bridge->scratch_page =
agp_bridge.mask_memory(agp_bridge.scratch_page_real, 0); agp_bridge->mask_memory(agp_bridge->scratch_page_real, 0);
} }
size_value = agp_bridge.fetch_size(); size_value = agp_bridge->fetch_size();
if (size_value == 0) { if (size_value == 0) {
printk(KERN_ERR PFX "unable to determine aperture size.\n"); printk(KERN_ERR PFX "unable to determine aperture size.\n");
rc = -EINVAL; rc = -EINVAL;
goto err_out; goto err_out;
} }
if (agp_bridge.create_gatt_table()) { if (agp_bridge->create_gatt_table()) {
printk(KERN_ERR PFX "unable to get memory for graphics translation table.\n"); printk(KERN_ERR PFX "unable to get memory for graphics translation table.\n");
rc = -ENOMEM; rc = -ENOMEM;
goto err_out; goto err_out;
} }
got_gatt = 1; got_gatt = 1;
agp_bridge.key_list = vmalloc(PAGE_SIZE * 4); agp_bridge->key_list = vmalloc(PAGE_SIZE * 4);
if (agp_bridge.key_list == NULL) { if (agp_bridge->key_list == NULL) {
printk(KERN_ERR PFX "error allocating memory for key lists.\n"); printk(KERN_ERR PFX "error allocating memory for key lists.\n");
rc = -ENOMEM; rc = -ENOMEM;
goto err_out; goto err_out;
...@@ -153,27 +154,27 @@ static int agp_backend_initialize(struct pci_dev *dev) ...@@ -153,27 +154,27 @@ static int agp_backend_initialize(struct pci_dev *dev)
got_keylist = 1; got_keylist = 1;
/* FIXME vmalloc'd memory not guaranteed contiguous */ /* FIXME vmalloc'd memory not guaranteed contiguous */
memset(agp_bridge.key_list, 0, PAGE_SIZE * 4); memset(agp_bridge->key_list, 0, PAGE_SIZE * 4);
if (agp_bridge.configure()) { if (agp_bridge->configure()) {
printk(KERN_ERR PFX "error configuring host chipset.\n"); printk(KERN_ERR PFX "error configuring host chipset.\n");
rc = -EINVAL; rc = -EINVAL;
goto err_out; goto err_out;
} }
printk(KERN_INFO PFX "AGP aperture is %dM @ 0x%lx\n", printk(KERN_INFO PFX "AGP aperture is %dM @ 0x%lx\n",
size_value, agp_bridge.gart_bus_addr); size_value, agp_bridge->gart_bus_addr);
return 0; return 0;
err_out: err_out:
if (agp_bridge.needs_scratch_page == TRUE) { if (agp_bridge->needs_scratch_page == TRUE) {
agp_bridge.agp_destroy_page(phys_to_virt(agp_bridge.scratch_page_real)); agp_bridge->agp_destroy_page(phys_to_virt(agp_bridge->scratch_page_real));
} }
if (got_gatt) if (got_gatt)
agp_bridge.free_gatt_table(); agp_bridge->free_gatt_table();
if (got_keylist) if (got_keylist)
vfree(agp_bridge.key_list); vfree(agp_bridge->key_list);
return rc; return rc;
} }
...@@ -181,16 +182,16 @@ static int agp_backend_initialize(struct pci_dev *dev) ...@@ -181,16 +182,16 @@ static int agp_backend_initialize(struct pci_dev *dev)
/* cannot be __exit b/c as it could be called from __init code */ /* cannot be __exit b/c as it could be called from __init code */
static void agp_backend_cleanup(void) static void agp_backend_cleanup(void)
{ {
if (agp_bridge.cleanup != NULL) if (agp_bridge->cleanup != NULL)
agp_bridge.cleanup(); agp_bridge->cleanup();
if (agp_bridge.free_gatt_table != NULL) if (agp_bridge->free_gatt_table != NULL)
agp_bridge.free_gatt_table(); agp_bridge->free_gatt_table();
if (agp_bridge.key_list) if (agp_bridge->key_list)
vfree(agp_bridge.key_list); vfree(agp_bridge->key_list);
if ((agp_bridge.agp_destroy_page!=NULL) && if ((agp_bridge->agp_destroy_page!=NULL) &&
(agp_bridge.needs_scratch_page == TRUE)) (agp_bridge->needs_scratch_page == TRUE))
agp_bridge.agp_destroy_page(phys_to_virt(agp_bridge.scratch_page_real)); agp_bridge->agp_destroy_page(phys_to_virt(agp_bridge->scratch_page_real));
} }
static int agp_power(struct pm_dev *dev, pm_request_t rq, void *data) static int agp_power(struct pm_dev *dev, pm_request_t rq, void *data)
...@@ -198,9 +199,9 @@ static int agp_power(struct pm_dev *dev, pm_request_t rq, void *data) ...@@ -198,9 +199,9 @@ static int agp_power(struct pm_dev *dev, pm_request_t rq, void *data)
switch(rq) switch(rq)
{ {
case PM_SUSPEND: case PM_SUSPEND:
return agp_bridge.suspend(); return agp_bridge->suspend();
case PM_RESUME: case PM_RESUME:
agp_bridge.resume(); agp_bridge->resume();
return 0; return 0;
} }
return 0; return 0;
...@@ -251,14 +252,14 @@ int agp_register_driver (struct agp_driver *drv) ...@@ -251,14 +252,14 @@ int agp_register_driver (struct agp_driver *drv)
/* FIXME: What to do with this? */ /* FIXME: What to do with this? */
inter_module_register("drm_agp", THIS_MODULE, &drm_agp); inter_module_register("drm_agp", THIS_MODULE, &drm_agp);
pm_register(PM_PCI_DEV, PM_PCI_ID(agp_bridge.dev), agp_power); pm_register(PM_PCI_DEV, PM_PCI_ID(agp_bridge->dev), agp_power);
agp_count++; agp_count++;
return 0; return 0;
frontend_err: frontend_err:
agp_backend_cleanup(); agp_backend_cleanup();
err_out: err_out:
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
module_put(drv->owner); module_put(drv->owner);
drv->dev = NULL; drv->dev = NULL;
return ret_val; return ret_val;
...@@ -269,7 +270,7 @@ int agp_unregister_driver(struct agp_driver *drv) ...@@ -269,7 +270,7 @@ int agp_unregister_driver(struct agp_driver *drv)
if (drv->dev==NULL) if (drv->dev==NULL)
return -ENODEV; return -ENODEV;
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
pm_unregister_all(agp_power); pm_unregister_all(agp_power);
agp_frontend_cleanup(); agp_frontend_cleanup();
agp_backend_cleanup(); agp_backend_cleanup();
...@@ -290,7 +291,7 @@ int __init agp_init(void) ...@@ -290,7 +291,7 @@ int __init agp_init(void)
already_initialised = 1; already_initialised = 1;
memset(&agp_bridge, 0, sizeof(struct agp_bridge_data)); memset(&agp_bridge, 0, sizeof(struct agp_bridge_data));
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
printk(KERN_INFO "Linux agpgart interface v%d.%d (c) Dave Jones\n", printk(KERN_INFO "Linux agpgart interface v%d.%d (c) Dave Jones\n",
AGPGART_VERSION_MAJOR, AGPGART_VERSION_MINOR); AGPGART_VERSION_MAJOR, AGPGART_VERSION_MINOR);
......
...@@ -77,7 +77,7 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne ...@@ -77,7 +77,7 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne
struct agp_3_0_dev *dev; struct agp_3_0_dev *dev;
}; };
struct pci_dev *td = agp_bridge.dev, *dev; struct pci_dev *td = agp_bridge->dev, *dev;
struct list_head *head = &dev_list->list, *pos; struct list_head *head = &dev_list->list, *pos;
struct agp_3_0_dev *cur; struct agp_3_0_dev *cur;
struct isoch_data *master, target; struct isoch_data *master, target;
...@@ -117,8 +117,8 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne ...@@ -117,8 +117,8 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne
if((ret = agp_3_0_dev_list_sort(dev_list, ndevs)) != 0) if((ret = agp_3_0_dev_list_sort(dev_list, ndevs)) != 0)
goto free_and_exit; goto free_and_exit;
pci_read_config_dword(td, agp_bridge.capndx + 0x0c, &tnistat); pci_read_config_dword(td, agp_bridge->capndx + 0x0c, &tnistat);
pci_read_config_dword(td, agp_bridge.capndx + 0x04, &tstatus); pci_read_config_dword(td, agp_bridge->capndx + 0x04, &tstatus);
/* Extract power-on defaults from the target */ /* Extract power-on defaults from the target */
target.maxbw = (tnistat >> 16) & 0xff; target.maxbw = (tnistat >> 16) & 0xff;
...@@ -170,13 +170,13 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne ...@@ -170,13 +170,13 @@ static int agp_3_0_isochronous_node_enable(struct agp_3_0_dev *dev_list, unsigne
* in the target's NISTAT register, so we need to do this now * in the target's NISTAT register, so we need to do this now
* to get an accurate value for ISOCH_N later. * to get an accurate value for ISOCH_N later.
*/ */
pci_read_config_word(td, agp_bridge.capndx + 0x20, &tnicmd); pci_read_config_word(td, agp_bridge->capndx + 0x20, &tnicmd);
tnicmd &= ~(0x3 << 6); tnicmd &= ~(0x3 << 6);
tnicmd |= target.y << 6; tnicmd |= target.y << 6;
pci_write_config_word(td, agp_bridge.capndx + 0x20, tnicmd); pci_write_config_word(td, agp_bridge->capndx + 0x20, tnicmd);
/* Reread the target's ISOCH_N */ /* Reread the target's ISOCH_N */
pci_read_config_dword(td, agp_bridge.capndx + 0x0c, &tnistat); pci_read_config_dword(td, agp_bridge->capndx + 0x0c, &tnistat);
target.n = (tnistat >> 8) & 0xff; target.n = (tnistat >> 8) & 0xff;
/* Calculate the minimum ISOCH_N needed by each master */ /* Calculate the minimum ISOCH_N needed by each master */
...@@ -296,7 +296,7 @@ static int agp_3_0_nonisochronous_node_enable(struct agp_3_0_dev *dev_list, unsi ...@@ -296,7 +296,7 @@ static int agp_3_0_nonisochronous_node_enable(struct agp_3_0_dev *dev_list, unsi
u32 trq, mrq, rem; u32 trq, mrq, rem;
unsigned int cdev = 0; unsigned int cdev = 0;
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx + 0x04, &tstatus); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + 0x04, &tstatus);
trq = (tstatus >> 24) & 0xff; trq = (tstatus >> 24) & 0xff;
mrq = trq / ndevs; mrq = trq / ndevs;
...@@ -321,7 +321,7 @@ static int agp_3_0_nonisochronous_node_enable(struct agp_3_0_dev *dev_list, unsi ...@@ -321,7 +321,7 @@ static int agp_3_0_nonisochronous_node_enable(struct agp_3_0_dev *dev_list, unsi
*/ */
static int agp_3_0_node_enable(u32 mode, u32 minor) static int agp_3_0_node_enable(u32 mode, u32 minor)
{ {
struct pci_dev *td = agp_bridge.dev, *dev; struct pci_dev *td = agp_bridge->dev, *dev;
u8 bus_num, mcapndx; u8 bus_num, mcapndx;
u32 isoch, arqsz, cal_cycle, tmp, rate; u32 isoch, arqsz, cal_cycle, tmp, rate;
u32 tstatus, tcmd, mcmd, mstatus, ncapid; u32 tstatus, tcmd, mcmd, mstatus, ncapid;
...@@ -364,7 +364,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) ...@@ -364,7 +364,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor)
} }
/* Extract some power-on defaults from the target */ /* Extract some power-on defaults from the target */
pci_read_config_dword(td, agp_bridge.capndx + 0x04, &tstatus); pci_read_config_dword(td, agp_bridge->capndx + 0x04, &tstatus);
isoch = (tstatus >> 17) & 0x1; isoch = (tstatus >> 17) & 0x1;
arqsz = (tstatus >> 13) & 0x7; arqsz = (tstatus >> 13) & 0x7;
cal_cycle = (tstatus >> 10) & 0x7; cal_cycle = (tstatus >> 10) & 0x7;
...@@ -470,7 +470,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) ...@@ -470,7 +470,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor)
* Also set the AGP_ENABLE bit, effectively 'turning on' the * Also set the AGP_ENABLE bit, effectively 'turning on' the
* target (this has to be done _before_ turning on the masters). * target (this has to be done _before_ turning on the masters).
*/ */
pci_read_config_dword(td, agp_bridge.capndx + 0x08, &tcmd); pci_read_config_dword(td, agp_bridge->capndx + 0x08, &tcmd);
tcmd &= ~(0x7 << 10); tcmd &= ~(0x7 << 10);
tcmd &= ~0x7; tcmd &= ~0x7;
...@@ -479,7 +479,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor) ...@@ -479,7 +479,7 @@ static int agp_3_0_node_enable(u32 mode, u32 minor)
tcmd |= 0x1 << 8; tcmd |= 0x1 << 8;
tcmd |= rate; tcmd |= rate;
pci_write_config_dword(td, agp_bridge.capndx + 0x08, tcmd); pci_write_config_dword(td, agp_bridge->capndx + 0x08, tcmd);
/* /*
* Set the target's advertised arqsz value, the minimum supported * Set the target's advertised arqsz value, the minimum supported
...@@ -529,7 +529,7 @@ int agp_generic_agp_3_0_enable(u32 mode) ...@@ -529,7 +529,7 @@ int agp_generic_agp_3_0_enable(u32 mode)
{ {
u32 ncapid, major, minor, agp_3_0; u32 ncapid, major, minor, agp_3_0;
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx, &ncapid); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx, &ncapid);
major = (ncapid >> 20) & 0xf; major = (ncapid >> 20) & 0xf;
minor = (ncapid >> 16) & 0xf; minor = (ncapid >> 16) & 0xf;
...@@ -537,7 +537,7 @@ int agp_generic_agp_3_0_enable(u32 mode) ...@@ -537,7 +537,7 @@ int agp_generic_agp_3_0_enable(u32 mode)
printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n",major, minor); printk(KERN_INFO PFX "Found an AGP %d.%d compliant device.\n",major, minor);
if(major >= 3) { if(major >= 3) {
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx + 0x4, &agp_3_0); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx + 0x4, &agp_3_0);
/* /*
* Check to see if we are operating in 3.0 mode * Check to see if we are operating in 3.0 mode
*/ */
......
This diff is collapsed.
...@@ -176,7 +176,7 @@ static int hp_zx1_fetch_size(void) ...@@ -176,7 +176,7 @@ static int hp_zx1_fetch_size(void)
size = hp_private.gart_size / MB(1); size = hp_private.gart_size / MB(1);
hp_zx1_sizes[0].size = size; hp_zx1_sizes[0].size = size;
agp_bridge.current_size = (void *) &hp_zx1_sizes[0]; agp_bridge->current_size = (void *) &hp_zx1_sizes[0];
return size; return size;
} }
...@@ -184,10 +184,10 @@ static int hp_zx1_configure(void) ...@@ -184,10 +184,10 @@ static int hp_zx1_configure(void)
{ {
struct _hp_private *hp = &hp_private; struct _hp_private *hp = &hp_private;
agp_bridge.gart_bus_addr = hp->gart_base; agp_bridge->gart_bus_addr = hp->gart_base;
agp_bridge.capndx = pci_find_capability(agp_bridge.dev, PCI_CAP_ID_AGP); agp_bridge->capndx = pci_find_capability(agp_bridge->dev, PCI_CAP_ID_AGP);
pci_read_config_dword(agp_bridge.dev, pci_read_config_dword(agp_bridge->dev,
agp_bridge.capndx + PCI_AGP_STATUS, &agp_bridge.mode); agp_bridge->capndx + PCI_AGP_STATUS, &agp_bridge->mode);
if (hp->io_pdir_owner) { if (hp->io_pdir_owner) {
OUTREG64(hp->registers, HP_ZX1_PDIR_BASE, OUTREG64(hp->registers, HP_ZX1_PDIR_BASE,
...@@ -241,7 +241,7 @@ static int hp_zx1_create_gatt_table(void) ...@@ -241,7 +241,7 @@ static int hp_zx1_create_gatt_table(void)
} }
for (i = 0; i < hp->gatt_entries; i++) { for (i = 0; i < hp->gatt_entries; i++) {
hp->gatt[i] = (unsigned long) agp_bridge.scratch_page; hp->gatt[i] = (unsigned long) agp_bridge->scratch_page;
} }
return 0; return 0;
...@@ -296,11 +296,11 @@ static int hp_zx1_insert_memory(agp_memory * mem, off_t pg_start, int type) ...@@ -296,11 +296,11 @@ static int hp_zx1_insert_memory(agp_memory * mem, off_t pg_start, int type)
for (k = 0; for (k = 0;
k < hp->io_pages_per_kpage; k < hp->io_pages_per_kpage;
k++, j++, paddr += hp->io_page_size) { k++, j++, paddr += hp->io_page_size) {
hp->gatt[j] = agp_bridge.mask_memory(paddr, type); hp->gatt[j] = agp_bridge->mask_memory(paddr, type);
} }
} }
agp_bridge.tlb_flush(mem); agp_bridge->tlb_flush(mem);
return 0; return 0;
} }
...@@ -316,10 +316,10 @@ static int hp_zx1_remove_memory(agp_memory * mem, off_t pg_start, int type) ...@@ -316,10 +316,10 @@ static int hp_zx1_remove_memory(agp_memory * mem, off_t pg_start, int type)
io_pg_start = hp->io_pages_per_kpage * pg_start; io_pg_start = hp->io_pages_per_kpage * pg_start;
io_pg_count = hp->io_pages_per_kpage * mem->page_count; io_pg_count = hp->io_pages_per_kpage * mem->page_count;
for (i = io_pg_start; i < io_pg_count + io_pg_start; i++) { for (i = io_pg_start; i < io_pg_count + io_pg_start; i++) {
hp->gatt[i] = agp_bridge.scratch_page; hp->gatt[i] = agp_bridge->scratch_page;
} }
agp_bridge.tlb_flush(mem); agp_bridge->tlb_flush(mem);
return 0; return 0;
} }
...@@ -330,39 +330,39 @@ static unsigned long hp_zx1_mask_memory(unsigned long addr, int type) ...@@ -330,39 +330,39 @@ static unsigned long hp_zx1_mask_memory(unsigned long addr, int type)
static int __init hp_zx1_setup (struct pci_dev *pdev __attribute__((unused))) static int __init hp_zx1_setup (struct pci_dev *pdev __attribute__((unused)))
{ {
agp_bridge.masks = hp_zx1_masks; agp_bridge->masks = hp_zx1_masks;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.size_type = FIXED_APER_SIZE; agp_bridge->size_type = FIXED_APER_SIZE;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = hp_zx1_configure; agp_bridge->configure = hp_zx1_configure;
agp_bridge.fetch_size = hp_zx1_fetch_size; agp_bridge->fetch_size = hp_zx1_fetch_size;
agp_bridge.cleanup = hp_zx1_cleanup; agp_bridge->cleanup = hp_zx1_cleanup;
agp_bridge.tlb_flush = hp_zx1_tlbflush; agp_bridge->tlb_flush = hp_zx1_tlbflush;
agp_bridge.mask_memory = hp_zx1_mask_memory; agp_bridge->mask_memory = hp_zx1_mask_memory;
agp_bridge.agp_enable = agp_generic_agp_enable; agp_bridge->agp_enable = agp_generic_agp_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = hp_zx1_create_gatt_table; agp_bridge->create_gatt_table = hp_zx1_create_gatt_table;
agp_bridge.free_gatt_table = hp_zx1_free_gatt_table; agp_bridge->free_gatt_table = hp_zx1_free_gatt_table;
agp_bridge.insert_memory = hp_zx1_insert_memory; agp_bridge->insert_memory = hp_zx1_insert_memory;
agp_bridge.remove_memory = hp_zx1_remove_memory; agp_bridge->remove_memory = hp_zx1_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.cant_use_aperture = 1; agp_bridge->cant_use_aperture = 1;
return hp_zx1_ioc_init(); return hp_zx1_ioc_init();
} }
static int __init agp_find_supported_device(struct pci_dev *dev) static int __init agp_find_supported_device(struct pci_dev *dev)
{ {
agp_bridge.dev = dev; agp_bridge->dev = dev;
/* ZX1 LBAs can be either PCI or AGP bridges */ /* ZX1 LBAs can be either PCI or AGP bridges */
if (pci_find_capability(dev, PCI_CAP_ID_AGP)) { if (pci_find_capability(dev, PCI_CAP_ID_AGP)) {
printk(KERN_INFO PFX "Detected HP ZX1 AGP chipset at %s\n", printk(KERN_INFO PFX "Detected HP ZX1 AGP chipset at %s\n",
dev->slot_name); dev->slot_name);
agp_bridge.type = HP_ZX1; agp_bridge->type = HP_ZX1;
agp_bridge.dev = dev; agp_bridge->dev = dev;
return hp_zx1_setup(dev); return hp_zx1_setup(dev);
} }
return -ENODEV; return -ENODEV;
...@@ -408,7 +408,7 @@ static int __init agp_hp_init(void) ...@@ -408,7 +408,7 @@ static int __init agp_hp_init(void)
ret_val = pci_module_init(&agp_hp_pci_driver); ret_val = pci_module_init(&agp_hp_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
This diff is collapsed.
...@@ -13,16 +13,16 @@ static int intel_7505_fetch_size(void) ...@@ -13,16 +13,16 @@ static int intel_7505_fetch_size(void)
/* /*
* For AGP 3.0 APSIZE is now 16 bits * For AGP 3.0 APSIZE is now 16 bits
*/ */
pci_read_config_word (agp_bridge.dev, INTEL_I7505_APSIZE, &tmp); pci_read_config_word (agp_bridge->dev, INTEL_I7505_APSIZE, &tmp);
tmp = (tmp & 0xfff); tmp = (tmp & 0xfff);
values = A_SIZE_16(agp_bridge.aperture_sizes); values = A_SIZE_16(agp_bridge->aperture_sizes);
for (i=0; i < agp_bridge.num_aperture_sizes; i++) { for (i=0; i < agp_bridge->num_aperture_sizes; i++) {
if (tmp == values[i].size_value) { if (tmp == values[i].size_value) {
agp_bridge.previous_size = agp_bridge.current_size = agp_bridge->previous_size = agp_bridge->current_size =
(void *)(values + i); (void *)(values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -33,18 +33,18 @@ static int intel_7505_fetch_size(void) ...@@ -33,18 +33,18 @@ static int intel_7505_fetch_size(void)
static void intel_7505_tlbflush(agp_memory *mem) static void intel_7505_tlbflush(agp_memory *mem)
{ {
u32 temp; u32 temp;
pci_read_config_dword(agp_bridge.dev, INTEL_I7505_AGPCTRL, &temp); pci_read_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, &temp);
pci_write_config_dword(agp_bridge.dev, INTEL_I7505_AGPCTRL, temp & ~(1 << 7)); pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, temp & ~(1 << 7));
pci_read_config_dword(agp_bridge.dev, INTEL_I7505_AGPCTRL, &temp); pci_read_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, &temp);
pci_write_config_dword(agp_bridge.dev, INTEL_I7505_AGPCTRL, temp | (1 << 7)); pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, temp | (1 << 7));
} }
static void intel_7505_cleanup(void) static void intel_7505_cleanup(void)
{ {
aper_size_info_16 *previous_size; aper_size_info_16 *previous_size;
previous_size = A_SIZE_16(agp_bridge.previous_size); previous_size = A_SIZE_16(agp_bridge->previous_size);
pci_write_config_byte(agp_bridge.dev, INTEL_I7505_APSIZE, pci_write_config_byte(agp_bridge->dev, INTEL_I7505_APSIZE,
previous_size->size_value); previous_size->size_value);
} }
...@@ -54,25 +54,25 @@ static int intel_7505_configure(void) ...@@ -54,25 +54,25 @@ static int intel_7505_configure(void)
u32 temp; u32 temp;
aper_size_info_16 *current_size; aper_size_info_16 *current_size;
current_size = A_SIZE_16(agp_bridge.current_size); current_size = A_SIZE_16(agp_bridge->current_size);
/* aperture size */ /* aperture size */
pci_write_config_word(agp_bridge.dev, INTEL_I7505_APSIZE, pci_write_config_word(agp_bridge->dev, INTEL_I7505_APSIZE,
current_size->size_value); current_size->size_value);
/* address to map to */ /* address to map to */
pci_read_config_dword(agp_bridge.dev, INTEL_I7505_NAPBASELO, &temp); pci_read_config_dword(agp_bridge->dev, INTEL_I7505_NAPBASELO, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
/* attbase */ /* attbase */
pci_write_config_dword(agp_bridge.dev, INTEL_I7505_ATTBASE, pci_write_config_dword(agp_bridge->dev, INTEL_I7505_ATTBASE,
agp_bridge.gatt_bus_addr); agp_bridge->gatt_bus_addr);
/* agpctrl */ /* agpctrl */
pci_write_config_dword(agp_bridge.dev, INTEL_I7505_AGPCTRL, 0x0000); pci_write_config_dword(agp_bridge->dev, INTEL_I7505_AGPCTRL, 0x0000);
/* clear error registers */ /* clear error registers */
pci_write_config_byte(agp_bridge.dev, INTEL_I7505_ERRSTS, 0xff); pci_write_config_byte(agp_bridge->dev, INTEL_I7505_ERRSTS, 0xff);
return 0; return 0;
} }
...@@ -95,30 +95,30 @@ static void i7505_setup (u32 mode) ...@@ -95,30 +95,30 @@ static void i7505_setup (u32 mode)
static int __init intel_7505_setup (struct pci_dev *pdev) static int __init intel_7505_setup (struct pci_dev *pdev)
{ {
agp_bridge.masks = intel_generic_masks; agp_bridge->masks = intel_generic_masks;
agp_bridge.aperture_sizes = (void *) intel_7505_sizes; agp_bridge->aperture_sizes = (void *) intel_7505_sizes;
agp_bridge.size_type = U16_APER_SIZE; agp_bridge->size_type = U16_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = intel_7505_configure; agp_bridge->configure = intel_7505_configure;
agp_bridge.fetch_size = intel_7505_fetch_size; agp_bridge->fetch_size = intel_7505_fetch_size;
agp_bridge.cleanup = intel_7505_cleanup; agp_bridge->cleanup = intel_7505_cleanup;
agp_bridge.tlb_flush = intel_7505_tlbflush; agp_bridge->tlb_flush = intel_7505_tlbflush;
agp_bridge.mask_memory = intel_mask_memory; agp_bridge->mask_memory = intel_mask_memory;
agp_bridge.agp_enable = i7505_enable; agp_bridge->agp_enable = i7505_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = agp_generic_insert_memory; agp_bridge->insert_memory = agp_generic_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
return 0; return 0;
} }
...@@ -149,7 +149,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -149,7 +149,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
if (pdev->device == devs[j].device_id) { if (pdev->device == devs[j].device_id) {
printk (KERN_INFO PFX "Detected Intel %s chipset\n", printk (KERN_INFO PFX "Detected Intel %s chipset\n",
devs[j].chipset_name); devs[j].chipset_name);
agp_bridge.type = devs[j].chipset; agp_bridge->type = devs[j].chipset;
if (devs[j].chipset_setup != NULL) if (devs[j].chipset_setup != NULL)
return devs[j].chipset_setup(pdev); return devs[j].chipset_setup(pdev);
...@@ -177,10 +177,10 @@ static int __init agp_i7x05_probe (struct pci_dev *dev, const struct pci_device_ ...@@ -177,10 +177,10 @@ static int __init agp_i7x05_probe (struct pci_dev *dev, const struct pci_device_
return -ENODEV; return -ENODEV;
if (agp_lookup_host_bridge(dev) != -ENODEV) { if (agp_lookup_host_bridge(dev) != -ENODEV) {
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode) pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode)
i7x05_agp_driver.dev = dev; i7x05_agp_driver.dev = dev;
agp_register_driver(&i7x05_agp_driver); agp_register_driver(&i7x05_agp_driver);
return 0; return 0;
...@@ -215,7 +215,7 @@ int __init agp_i7x05_init(void) ...@@ -215,7 +215,7 @@ int __init agp_i7x05_init(void)
ret_val = pci_module_init(&agp_i7x05_pci_driver); ret_val = pci_module_init(&agp_i7x05_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
This diff is collapsed.
...@@ -16,16 +16,16 @@ static int sis_fetch_size(void) ...@@ -16,16 +16,16 @@ static int sis_fetch_size(void)
int i; int i;
struct aper_size_info_8 *values; struct aper_size_info_8 *values;
pci_read_config_byte(agp_bridge.dev, SIS_APSIZE, &temp_size); pci_read_config_byte(agp_bridge->dev, SIS_APSIZE, &temp_size);
values = A_SIZE_8(agp_bridge.aperture_sizes); values = A_SIZE_8(agp_bridge->aperture_sizes);
for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { for (i = 0; i < agp_bridge->num_aperture_sizes; i++) {
if ((temp_size == values[i].size_value) || if ((temp_size == values[i].size_value) ||
((temp_size & ~(0x03)) == ((temp_size & ~(0x03)) ==
(values[i].size_value & ~(0x03)))) { (values[i].size_value & ~(0x03)))) {
agp_bridge.previous_size = agp_bridge->previous_size =
agp_bridge.current_size = (void *) (values + i); agp_bridge->current_size = (void *) (values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -35,7 +35,7 @@ static int sis_fetch_size(void) ...@@ -35,7 +35,7 @@ static int sis_fetch_size(void)
static void sis_tlbflush(agp_memory * mem) static void sis_tlbflush(agp_memory * mem)
{ {
pci_write_config_byte(agp_bridge.dev, SIS_TLBFLUSH, 0x02); pci_write_config_byte(agp_bridge->dev, SIS_TLBFLUSH, 0x02);
} }
static int sis_configure(void) static int sis_configure(void)
...@@ -43,13 +43,13 @@ static int sis_configure(void) ...@@ -43,13 +43,13 @@ static int sis_configure(void)
u32 temp; u32 temp;
struct aper_size_info_8 *current_size; struct aper_size_info_8 *current_size;
current_size = A_SIZE_8(agp_bridge.current_size); current_size = A_SIZE_8(agp_bridge->current_size);
pci_write_config_byte(agp_bridge.dev, SIS_TLBCNTRL, 0x05); pci_write_config_byte(agp_bridge->dev, SIS_TLBCNTRL, 0x05);
pci_read_config_dword(agp_bridge.dev, SIS_APBASE, &temp); pci_read_config_dword(agp_bridge->dev, SIS_APBASE, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
pci_write_config_dword(agp_bridge.dev, SIS_ATTBASE, pci_write_config_dword(agp_bridge->dev, SIS_ATTBASE,
agp_bridge.gatt_bus_addr); agp_bridge->gatt_bus_addr);
pci_write_config_byte(agp_bridge.dev, SIS_APSIZE, pci_write_config_byte(agp_bridge->dev, SIS_APSIZE,
current_size->size_value); current_size->size_value);
return 0; return 0;
} }
...@@ -58,8 +58,8 @@ static void sis_cleanup(void) ...@@ -58,8 +58,8 @@ static void sis_cleanup(void)
{ {
struct aper_size_info_8 *previous_size; struct aper_size_info_8 *previous_size;
previous_size = A_SIZE_8(agp_bridge.previous_size); previous_size = A_SIZE_8(agp_bridge->previous_size);
pci_write_config_byte(agp_bridge.dev, SIS_APSIZE, pci_write_config_byte(agp_bridge->dev, SIS_APSIZE,
(previous_size->size_value & ~(0x03))); (previous_size->size_value & ~(0x03)));
} }
...@@ -67,7 +67,7 @@ static unsigned long sis_mask_memory(unsigned long addr, int type) ...@@ -67,7 +67,7 @@ static unsigned long sis_mask_memory(unsigned long addr, int type)
{ {
/* Memory type is ignored */ /* Memory type is ignored */
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
static struct aper_size_info_8 sis_generic_sizes[7] = static struct aper_size_info_8 sis_generic_sizes[7] =
...@@ -88,30 +88,30 @@ static struct gatt_mask sis_generic_masks[] = ...@@ -88,30 +88,30 @@ static struct gatt_mask sis_generic_masks[] =
static int __init sis_generic_setup (struct pci_dev *pdev) static int __init sis_generic_setup (struct pci_dev *pdev)
{ {
agp_bridge.masks = sis_generic_masks; agp_bridge->masks = sis_generic_masks;
agp_bridge.aperture_sizes = (void *) sis_generic_sizes; agp_bridge->aperture_sizes = (void *) sis_generic_sizes;
agp_bridge.size_type = U8_APER_SIZE; agp_bridge->size_type = U8_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = sis_configure; agp_bridge->configure = sis_configure;
agp_bridge.fetch_size = sis_fetch_size; agp_bridge->fetch_size = sis_fetch_size;
agp_bridge.cleanup = sis_cleanup; agp_bridge->cleanup = sis_cleanup;
agp_bridge.tlb_flush = sis_tlbflush; agp_bridge->tlb_flush = sis_tlbflush;
agp_bridge.mask_memory = sis_mask_memory; agp_bridge->mask_memory = sis_mask_memory;
agp_bridge.agp_enable = agp_generic_agp_enable; agp_bridge->agp_enable = agp_generic_agp_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = agp_generic_insert_memory; agp_bridge->insert_memory = agp_generic_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
return 0; return 0;
} }
...@@ -198,7 +198,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -198,7 +198,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
if (pdev->device == devs[j].device_id) { if (pdev->device == devs[j].device_id) {
printk (KERN_INFO PFX "Detected SiS %s chipset\n", printk (KERN_INFO PFX "Detected SiS %s chipset\n",
devs[j].chipset_name); devs[j].chipset_name);
agp_bridge.type = devs[j].chipset; agp_bridge->type = devs[j].chipset;
if (devs[j].chipset_setup != NULL) if (devs[j].chipset_setup != NULL)
return devs[j].chipset_setup(pdev); return devs[j].chipset_setup(pdev);
...@@ -212,7 +212,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -212,7 +212,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
if (agp_try_unsupported) { if (agp_try_unsupported) {
printk(KERN_WARNING PFX "Trying generic SiS routines" printk(KERN_WARNING PFX "Trying generic SiS routines"
" for device id: %04x\n", pdev->device); " for device id: %04x\n", pdev->device);
agp_bridge.type = SIS_GENERIC; agp_bridge->type = SIS_GENERIC;
return sis_generic_setup(pdev); return sis_generic_setup(pdev);
} }
...@@ -235,10 +235,10 @@ static int __init agp_sis_probe (struct pci_dev *dev, const struct pci_device_id ...@@ -235,10 +235,10 @@ static int __init agp_sis_probe (struct pci_dev *dev, const struct pci_device_id
/* probe for known chipsets */ /* probe for known chipsets */
if (agp_lookup_host_bridge(dev) != -ENODEV) { if (agp_lookup_host_bridge(dev) != -ENODEV) {
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode);
sis_agp_driver.dev = dev; sis_agp_driver.dev = dev;
agp_register_driver(&sis_agp_driver); agp_register_driver(&sis_agp_driver);
return 0; return 0;
...@@ -272,7 +272,7 @@ static int __init agp_sis_init(void) ...@@ -272,7 +272,7 @@ static int __init agp_sis_init(void)
ret_val = pci_module_init(&agp_sis_pci_driver); ret_val = pci_module_init(&agp_sis_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
This diff is collapsed.
...@@ -17,13 +17,13 @@ static int via_fetch_size(void) ...@@ -17,13 +17,13 @@ static int via_fetch_size(void)
u8 temp; u8 temp;
struct aper_size_info_8 *values; struct aper_size_info_8 *values;
values = A_SIZE_8(agp_bridge.aperture_sizes); values = A_SIZE_8(agp_bridge->aperture_sizes);
pci_read_config_byte(agp_bridge.dev, VIA_APSIZE, &temp); pci_read_config_byte(agp_bridge->dev, VIA_APSIZE, &temp);
for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { for (i = 0; i < agp_bridge->num_aperture_sizes; i++) {
if (temp == values[i].size_value) { if (temp == values[i].size_value) {
agp_bridge.previous_size = agp_bridge->previous_size =
agp_bridge.current_size = (void *) (values + i); agp_bridge->current_size = (void *) (values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -36,20 +36,20 @@ static int via_configure(void) ...@@ -36,20 +36,20 @@ static int via_configure(void)
u32 temp; u32 temp;
struct aper_size_info_8 *current_size; struct aper_size_info_8 *current_size;
current_size = A_SIZE_8(agp_bridge.current_size); current_size = A_SIZE_8(agp_bridge->current_size);
/* aperture size */ /* aperture size */
pci_write_config_byte(agp_bridge.dev, VIA_APSIZE, pci_write_config_byte(agp_bridge->dev, VIA_APSIZE,
current_size->size_value); current_size->size_value);
/* address to map too */ /* address to map too */
pci_read_config_dword(agp_bridge.dev, VIA_APBASE, &temp); pci_read_config_dword(agp_bridge->dev, VIA_APBASE, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
/* GART control register */ /* GART control register */
pci_write_config_dword(agp_bridge.dev, VIA_GARTCTRL, 0x0000000f); pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000000f);
/* attbase - aperture GATT base */ /* attbase - aperture GATT base */
pci_write_config_dword(agp_bridge.dev, VIA_ATTBASE, pci_write_config_dword(agp_bridge->dev, VIA_ATTBASE,
(agp_bridge.gatt_bus_addr & 0xfffff000) | 3); (agp_bridge->gatt_bus_addr & 0xfffff000) | 3);
return 0; return 0;
} }
...@@ -57,8 +57,8 @@ static void via_cleanup(void) ...@@ -57,8 +57,8 @@ static void via_cleanup(void)
{ {
struct aper_size_info_8 *previous_size; struct aper_size_info_8 *previous_size;
previous_size = A_SIZE_8(agp_bridge.previous_size); previous_size = A_SIZE_8(agp_bridge->previous_size);
pci_write_config_byte(agp_bridge.dev, VIA_APSIZE, pci_write_config_byte(agp_bridge->dev, VIA_APSIZE,
previous_size->size_value); previous_size->size_value);
/* Do not disable by writing 0 to VIA_ATTBASE, it screws things up /* Do not disable by writing 0 to VIA_ATTBASE, it screws things up
* during reinitialization. * during reinitialization.
...@@ -67,15 +67,15 @@ static void via_cleanup(void) ...@@ -67,15 +67,15 @@ static void via_cleanup(void)
static void via_tlbflush(agp_memory * mem) static void via_tlbflush(agp_memory * mem)
{ {
pci_write_config_dword(agp_bridge.dev, VIA_GARTCTRL, 0x0000008f); pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000008f);
pci_write_config_dword(agp_bridge.dev, VIA_GARTCTRL, 0x0000000f); pci_write_config_dword(agp_bridge->dev, VIA_GARTCTRL, 0x0000000f);
} }
static unsigned long via_mask_memory(unsigned long addr, int type) static unsigned long via_mask_memory(unsigned long addr, int type)
{ {
/* Memory type is ignored */ /* Memory type is ignored */
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
static struct aper_size_info_8 via_generic_sizes[7] = static struct aper_size_info_8 via_generic_sizes[7] =
...@@ -114,30 +114,30 @@ static int __init via_generic_setup (struct pci_dev *pdev) ...@@ -114,30 +114,30 @@ static int __init via_generic_setup (struct pci_dev *pdev)
} }
} }
agp_bridge.masks = via_generic_masks; agp_bridge->masks = via_generic_masks;
agp_bridge.aperture_sizes = (void *) via_generic_sizes; agp_bridge->aperture_sizes = (void *) via_generic_sizes;
agp_bridge.size_type = U8_APER_SIZE; agp_bridge->size_type = U8_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.configure = via_configure; agp_bridge->configure = via_configure;
agp_bridge.fetch_size = via_fetch_size; agp_bridge->fetch_size = via_fetch_size;
agp_bridge.cleanup = via_cleanup; agp_bridge->cleanup = via_cleanup;
agp_bridge.tlb_flush = via_tlbflush; agp_bridge->tlb_flush = via_tlbflush;
agp_bridge.mask_memory = via_mask_memory; agp_bridge->mask_memory = via_mask_memory;
agp_bridge.agp_enable = agp_generic_agp_enable; agp_bridge->agp_enable = agp_generic_agp_enable;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = agp_generic_insert_memory; agp_bridge->insert_memory = agp_generic_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
return 0; return 0;
} }
...@@ -239,7 +239,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -239,7 +239,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
while (devs[j].chipset_name != NULL) { while (devs[j].chipset_name != NULL) {
if (pdev->device == devs[j].device_id) { if (pdev->device == devs[j].device_id) {
printk (KERN_INFO PFX "Detected VIA %s chipset\n", devs[j].chipset_name); printk (KERN_INFO PFX "Detected VIA %s chipset\n", devs[j].chipset_name);
agp_bridge.type = devs[j].chipset; agp_bridge->type = devs[j].chipset;
if (devs[j].chipset_setup != NULL) if (devs[j].chipset_setup != NULL)
return devs[j].chipset_setup(pdev); return devs[j].chipset_setup(pdev);
...@@ -253,7 +253,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev) ...@@ -253,7 +253,7 @@ static int __init agp_lookup_host_bridge (struct pci_dev *pdev)
if (agp_try_unsupported) { if (agp_try_unsupported) {
printk(KERN_WARNING PFX "Trying generic VIA routines" printk(KERN_WARNING PFX "Trying generic VIA routines"
" for device id: %04x\n", pdev->device); " for device id: %04x\n", pdev->device);
agp_bridge.type = VIA_GENERIC; agp_bridge->type = VIA_GENERIC;
return via_generic_setup(pdev); return via_generic_setup(pdev);
} }
...@@ -276,10 +276,10 @@ static int __init agp_via_probe (struct pci_dev *dev, const struct pci_device_id ...@@ -276,10 +276,10 @@ static int __init agp_via_probe (struct pci_dev *dev, const struct pci_device_id
/* probe for known chipsets */ /* probe for known chipsets */
if (agp_lookup_host_bridge (dev) != -ENODEV) { if (agp_lookup_host_bridge (dev) != -ENODEV) {
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode);
via_agp_driver.dev = dev; via_agp_driver.dev = dev;
agp_register_driver(&via_agp_driver); agp_register_driver(&via_agp_driver);
return 0; return 0;
...@@ -313,7 +313,7 @@ static int __init agp_via_init(void) ...@@ -313,7 +313,7 @@ static int __init agp_via_init(void)
ret_val = pci_module_init(&agp_via_pci_driver); ret_val = pci_module_init(&agp_via_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
...@@ -20,15 +20,15 @@ static int via_fetch_size(void) ...@@ -20,15 +20,15 @@ static int via_fetch_size(void)
u16 temp; u16 temp;
struct aper_size_info_16 *values; struct aper_size_info_16 *values;
values = A_SIZE_16(agp_bridge.aperture_sizes); values = A_SIZE_16(agp_bridge->aperture_sizes);
pci_read_config_word(agp_bridge.dev, VIA_AGP3_APSIZE, &temp); pci_read_config_word(agp_bridge->dev, VIA_AGP3_APSIZE, &temp);
temp &= 0xfff; temp &= 0xfff;
for (i = 0; i < agp_bridge.num_aperture_sizes; i++) { for (i = 0; i < agp_bridge->num_aperture_sizes; i++) {
if (temp == values[i].size_value) { if (temp == values[i].size_value) {
agp_bridge.previous_size = agp_bridge->previous_size =
agp_bridge.current_size = (void *) (values + i); agp_bridge->current_size = (void *) (values + i);
agp_bridge.aperture_size_idx = i; agp_bridge->aperture_size_idx = i;
return values[i].size; return values[i].size;
} }
} }
...@@ -40,15 +40,15 @@ static int via_configure(void) ...@@ -40,15 +40,15 @@ static int via_configure(void)
u32 temp; u32 temp;
struct aper_size_info_16 *current_size; struct aper_size_info_16 *current_size;
current_size = A_SIZE_16(agp_bridge.current_size); current_size = A_SIZE_16(agp_bridge->current_size);
/* address to map too */ /* address to map too */
pci_read_config_dword(agp_bridge.dev, VIA_APBASE, &temp); pci_read_config_dword(agp_bridge->dev, VIA_APBASE, &temp);
agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK); agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
/* attbase - aperture GATT base */ /* attbase - aperture GATT base */
pci_write_config_dword(agp_bridge.dev, VIA_AGP3_ATTBASE, pci_write_config_dword(agp_bridge->dev, VIA_AGP3_ATTBASE,
agp_bridge.gatt_bus_addr & 0xfffff000); agp_bridge->gatt_bus_addr & 0xfffff000);
return 0; return 0;
} }
...@@ -56,24 +56,24 @@ static void via_cleanup(void) ...@@ -56,24 +56,24 @@ static void via_cleanup(void)
{ {
struct aper_size_info_16 *previous_size; struct aper_size_info_16 *previous_size;
previous_size = A_SIZE_16(agp_bridge.previous_size); previous_size = A_SIZE_16(agp_bridge->previous_size);
pci_write_config_byte(agp_bridge.dev, VIA_APSIZE, previous_size->size_value); pci_write_config_byte(agp_bridge->dev, VIA_APSIZE, previous_size->size_value);
} }
static void via_tlbflush(agp_memory * mem) static void via_tlbflush(agp_memory * mem)
{ {
u32 temp; u32 temp;
pci_read_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, &temp); pci_read_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, &temp);
pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp & ~(1<<7)); pci_write_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, temp & ~(1<<7));
pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp); pci_write_config_dword(agp_bridge->dev, VIA_AGP3_GARTCTRL, temp);
} }
static unsigned long via_mask_memory(unsigned long addr, int type) static unsigned long via_mask_memory(unsigned long addr, int type)
{ {
/* Memory type is ignored */ /* Memory type is ignored */
return addr | agp_bridge.masks[0].mask; return addr | agp_bridge->masks[0].mask;
} }
static struct aper_size_info_16 via_generic_sizes[11] = static struct aper_size_info_16 via_generic_sizes[11] =
...@@ -123,36 +123,36 @@ static int __init agp_via_probe (struct pci_dev *dev, const struct pci_device_id ...@@ -123,36 +123,36 @@ static int __init agp_via_probe (struct pci_dev *dev, const struct pci_device_id
printk (KERN_INFO PFX "Detected VIA KT400 AGP3 chipset\n"); printk (KERN_INFO PFX "Detected VIA KT400 AGP3 chipset\n");
agp_bridge.dev = dev; agp_bridge->dev = dev;
agp_bridge.type = VIA_APOLLO_KT400_3; agp_bridge->type = VIA_APOLLO_KT400_3;
agp_bridge.capndx = cap_ptr; agp_bridge->capndx = cap_ptr;
agp_bridge.masks = via_generic_masks; agp_bridge->masks = via_generic_masks;
agp_bridge.aperture_sizes = (void *) via_generic_sizes; agp_bridge->aperture_sizes = (void *) via_generic_sizes;
agp_bridge.size_type = U8_APER_SIZE; agp_bridge->size_type = U8_APER_SIZE;
agp_bridge.num_aperture_sizes = 7; agp_bridge->num_aperture_sizes = 7;
agp_bridge.dev_private_data = NULL; agp_bridge->dev_private_data = NULL;
agp_bridge.needs_scratch_page = FALSE; agp_bridge->needs_scratch_page = FALSE;
agp_bridge.agp_enable = via_kt400_enable; agp_bridge->agp_enable = via_kt400_enable;
agp_bridge.configure = via_configure; agp_bridge->configure = via_configure;
agp_bridge.fetch_size = via_fetch_size; agp_bridge->fetch_size = via_fetch_size;
agp_bridge.cleanup = via_cleanup; agp_bridge->cleanup = via_cleanup;
agp_bridge.tlb_flush = via_tlbflush; agp_bridge->tlb_flush = via_tlbflush;
agp_bridge.mask_memory = via_mask_memory; agp_bridge->mask_memory = via_mask_memory;
agp_bridge.cache_flush = global_cache_flush; agp_bridge->cache_flush = global_cache_flush;
agp_bridge.create_gatt_table = agp_generic_create_gatt_table; agp_bridge->create_gatt_table = agp_generic_create_gatt_table;
agp_bridge.free_gatt_table = agp_generic_free_gatt_table; agp_bridge->free_gatt_table = agp_generic_free_gatt_table;
agp_bridge.insert_memory = agp_generic_insert_memory; agp_bridge->insert_memory = agp_generic_insert_memory;
agp_bridge.remove_memory = agp_generic_remove_memory; agp_bridge->remove_memory = agp_generic_remove_memory;
agp_bridge.alloc_by_type = agp_generic_alloc_by_type; agp_bridge->alloc_by_type = agp_generic_alloc_by_type;
agp_bridge.free_by_type = agp_generic_free_by_type; agp_bridge->free_by_type = agp_generic_free_by_type;
agp_bridge.agp_alloc_page = agp_generic_alloc_page; agp_bridge->agp_alloc_page = agp_generic_alloc_page;
agp_bridge.agp_destroy_page = agp_generic_destroy_page; agp_bridge->agp_destroy_page = agp_generic_destroy_page;
agp_bridge.suspend = agp_generic_suspend; agp_bridge->suspend = agp_generic_suspend;
agp_bridge.resume = agp_generic_resume; agp_bridge->resume = agp_generic_resume;
agp_bridge.cant_use_aperture = 0; agp_bridge->cant_use_aperture = 0;
/* Fill in the mode register */ /* Fill in the mode register */
pci_read_config_dword(agp_bridge.dev, agp_bridge.capndx+PCI_AGP_STATUS, &agp_bridge.mode); pci_read_config_dword(agp_bridge->dev, agp_bridge->capndx+PCI_AGP_STATUS, &agp_bridge->mode);
via_kt400_agp_driver.dev = dev; via_kt400_agp_driver.dev = dev;
agp_register_driver(&via_kt400_agp_driver); agp_register_driver(&via_kt400_agp_driver);
...@@ -193,7 +193,7 @@ static int __init agp_via_init(void) ...@@ -193,7 +193,7 @@ static int __init agp_via_init(void)
ret_val = pci_module_init(&agp_via_pci_driver); ret_val = pci_module_init(&agp_via_pci_driver);
if (ret_val) if (ret_val)
agp_bridge.type = NOT_SUPPORTED; agp_bridge->type = NOT_SUPPORTED;
return ret_val; return ret_val;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment