agp: Support 64-bit APBASE
Per the AGP 3.0 spec, APBASE is a standard PCI BAR and may be either 32 bits or 64 bits wide. Many drivers read APBASE directly, but they only handled 32-bit BARs. The PCI core reads APBASE at enumeration-time. Use pci_bus_address() instead of reading it again in the driver. This works correctly for both 32-bit and 64-bit BARs. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
		
					parent
					
						
							
								06cf56e497
							
						
					
				
			
			
				commit
				
					
						e501b3d87f
					
				
			
		
					 11 changed files with 43 additions and 60 deletions
				
			
		| 
						 | 
					@ -239,6 +239,7 @@ long compat_agp_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Chipset independent registers (from AGP Spec) */
 | 
					/* Chipset independent registers (from AGP Spec) */
 | 
				
			||||||
#define AGP_APBASE	0x10
 | 
					#define AGP_APBASE	0x10
 | 
				
			||||||
 | 
					#define AGP_APERTURE_BAR	0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define AGPSTAT		0x4
 | 
					#define AGPSTAT		0x4
 | 
				
			||||||
#define AGPCMD		0x8
 | 
					#define AGPCMD		0x8
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -85,8 +85,8 @@ static int ali_configure(void)
 | 
				
			||||||
	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, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if 0
 | 
					#if 0
 | 
				
			||||||
	if (agp_bridge->type == ALI_M1541) {
 | 
						if (agp_bridge->type == ALI_M1541) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,6 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge)
 | 
				
			||||||
	unsigned long __iomem *cur_gatt;
 | 
						unsigned long __iomem *cur_gatt;
 | 
				
			||||||
	unsigned long addr;
 | 
						unsigned long addr;
 | 
				
			||||||
	int retval;
 | 
						int retval;
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	value = A_SIZE_LVL2(agp_bridge->current_size);
 | 
						value = A_SIZE_LVL2(agp_bridge->current_size);
 | 
				
			||||||
| 
						 | 
					@ -149,8 +148,7 @@ static int amd_create_gatt_table(struct agp_bridge_data *bridge)
 | 
				
			||||||
	 * used to program the agp master not the cpu
 | 
						 * used to program the agp master not the cpu
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						addr = pci_bus_address(agp_bridge->dev, AGP_APERTURE_BAR);
 | 
				
			||||||
	addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
					 | 
				
			||||||
	agp_bridge->gart_bus_addr = addr;
 | 
						agp_bridge->gart_bus_addr = addr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Calculate the agp offset */
 | 
						/* Calculate the agp offset */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -269,7 +269,6 @@ static int agp_aperture_valid(u64 aper, u32 size)
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
static int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp, u16 cap)
 | 
					static int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp, u16 cap)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 aper_low, aper_hi;
 | 
					 | 
				
			||||||
	u64 aper, nb_aper;
 | 
						u64 aper, nb_aper;
 | 
				
			||||||
	int order = 0;
 | 
						int order = 0;
 | 
				
			||||||
	u32 nb_order, nb_base;
 | 
						u32 nb_order, nb_base;
 | 
				
			||||||
| 
						 | 
					@ -295,9 +294,7 @@ static int fix_northbridge(struct pci_dev *nb, struct pci_dev *agp, u16 cap)
 | 
				
			||||||
		apsize |= 0xf00;
 | 
							apsize |= 0xf00;
 | 
				
			||||||
	order = 7 - hweight16(apsize);
 | 
						order = 7 - hweight16(apsize);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pci_read_config_dword(agp, 0x10, &aper_low);
 | 
						aper = pci_bus_address(agp, AGP_APERTURE_BAR);
 | 
				
			||||||
	pci_read_config_dword(agp, 0x14, &aper_hi);
 | 
					 | 
				
			||||||
	aper = (aper_low & ~((1<<22)-1)) | ((u64)aper_hi << 32);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	 * On some sick chips APSIZE is 0. This means it wants 4G
 | 
						 * On some sick chips APSIZE is 0. This means it wants 4G
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -211,10 +211,10 @@ static int ati_configure(void)
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		pci_write_config_dword(agp_bridge->dev, ATI_RS300_IG_AGPMODE, 0x20000);
 | 
							pci_write_config_dword(agp_bridge->dev, ATI_RS300_IG_AGPMODE, 0x20000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map too */
 | 
						/* address to map to */
 | 
				
			||||||
	/*
 | 
						/*
 | 
				
			||||||
	pci_read_config_dword(agp_bridge.dev, AGP_APBASE, &temp);
 | 
						agp_bridge.gart_bus_addr = pci_bus_address(agp_bridge.dev,
 | 
				
			||||||
	agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											   AGP_APERTURE_BAR);
 | 
				
			||||||
	printk(KERN_INFO PFX "IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr);
 | 
						printk(KERN_INFO PFX "IGP320 gart_bus_addr: %x\n", agp_bridge.gart_bus_addr);
 | 
				
			||||||
	*/
 | 
						*/
 | 
				
			||||||
	writel(0x60000, ati_generic_private.registers+ATI_GART_FEATURE_ID);
 | 
						writel(0x60000, ati_generic_private.registers+ATI_GART_FEATURE_ID);
 | 
				
			||||||
| 
						 | 
					@ -385,8 +385,7 @@ static int ati_create_gatt_table(struct agp_bridge_data *bridge)
 | 
				
			||||||
	 * This is a bus address even on the alpha, b/c its
 | 
						 * This is a bus address even on the alpha, b/c its
 | 
				
			||||||
	 * used to program the agp master not the cpu
 | 
						 * used to program the agp master not the cpu
 | 
				
			||||||
	 */
 | 
						 */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						addr = pci_bus_address(agp_bridge->dev, AGP_APERTURE_BAR);
 | 
				
			||||||
	addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
					 | 
				
			||||||
	agp_bridge->gart_bus_addr = addr;
 | 
						agp_bridge->gart_bus_addr = addr;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Calculate the agp offset */
 | 
						/* Calculate the agp offset */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -128,7 +128,6 @@ static void efficeon_cleanup(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int efficeon_configure(void)
 | 
					static int efficeon_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_lvl2 *current_size;
 | 
						struct aper_size_info_lvl2 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,8 +140,8 @@ static int efficeon_configure(void)
 | 
				
			||||||
			      current_size->size_value);
 | 
								      current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* agpctrl */
 | 
						/* agpctrl */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_AGPCTRL, 0x2280);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_AGPCTRL, 0x2280);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1396,8 +1396,8 @@ int agp3_generic_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	current_size = A_SIZE_16(agp_bridge->current_size);
 | 
						current_size = A_SIZE_16(agp_bridge->current_size);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* set aperture size */
 | 
						/* set aperture size */
 | 
				
			||||||
	pci_write_config_word(agp_bridge->dev, agp_bridge->capndx+AGPAPSIZE, current_size->size_value);
 | 
						pci_write_config_word(agp_bridge->dev, agp_bridge->capndx+AGPAPSIZE, current_size->size_value);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -118,7 +118,6 @@ static void intel_8xx_cleanup(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_configure(void)
 | 
					static int intel_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_16 *current_size;
 | 
						struct aper_size_info_16 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -128,8 +127,8 @@ static int intel_configure(void)
 | 
				
			||||||
	pci_write_config_word(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_word(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -148,7 +147,7 @@ static int intel_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_815_configure(void)
 | 
					static int intel_815_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp, addr;
 | 
						u32 addr;
 | 
				
			||||||
	u8 temp2;
 | 
						u8 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -167,8 +166,8 @@ static int intel_815_configure(void)
 | 
				
			||||||
			current_size->size_value);
 | 
								current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, INTEL_ATTBASE, &addr);
 | 
						pci_read_config_dword(agp_bridge->dev, INTEL_ATTBASE, &addr);
 | 
				
			||||||
	addr &= INTEL_815_ATTBASE_MASK;
 | 
						addr &= INTEL_815_ATTBASE_MASK;
 | 
				
			||||||
| 
						 | 
					@ -208,7 +207,6 @@ static void intel_820_cleanup(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_820_configure(void)
 | 
					static int intel_820_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u8 temp2;
 | 
						u8 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -218,8 +216,8 @@ static int intel_820_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -239,7 +237,6 @@ static int intel_820_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_840_configure(void)
 | 
					static int intel_840_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -249,8 +246,8 @@ static int intel_840_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -268,7 +265,6 @@ static int intel_840_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_845_configure(void)
 | 
					static int intel_845_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u8 temp2;
 | 
						u8 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -282,9 +278,9 @@ static int intel_845_configure(void)
 | 
				
			||||||
				       agp_bridge->apbase_config);
 | 
									       agp_bridge->apbase_config);
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		/* address to map to */
 | 
							/* address to map to */
 | 
				
			||||||
		pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
							agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
		agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
												    AGP_APERTURE_BAR);
 | 
				
			||||||
		agp_bridge->apbase_config = temp;
 | 
							agp_bridge->apbase_config = agp_bridge->gart_bus_addr;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
| 
						 | 
					@ -303,7 +299,6 @@ static int intel_845_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_850_configure(void)
 | 
					static int intel_850_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -313,8 +308,8 @@ static int intel_850_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -332,7 +327,6 @@ static int intel_850_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_860_configure(void)
 | 
					static int intel_860_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -342,8 +336,8 @@ static int intel_860_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -361,7 +355,6 @@ static int intel_860_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_830mp_configure(void)
 | 
					static int intel_830mp_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -371,8 +364,8 @@ static int intel_830mp_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					@ -390,7 +383,6 @@ static int intel_830mp_configure(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int intel_7505_configure(void)
 | 
					static int intel_7505_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	u32 temp;
 | 
					 | 
				
			||||||
	u16 temp2;
 | 
						u16 temp2;
 | 
				
			||||||
	struct aper_size_info_8 *current_size;
 | 
						struct aper_size_info_8 *current_size;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -400,8 +392,8 @@ static int intel_7505_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
						pci_write_config_byte(agp_bridge->dev, INTEL_APSIZE, current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* attbase - aperture base */
 | 
						/* attbase - aperture base */
 | 
				
			||||||
	pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
						pci_write_config_dword(agp_bridge->dev, INTEL_ATTBASE, agp_bridge->gatt_bus_addr);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -115,9 +115,8 @@ static int nvidia_configure(void)
 | 
				
			||||||
	pci_write_config_byte(agp_bridge->dev, NVIDIA_0_APSIZE,
 | 
						pci_write_config_byte(agp_bridge->dev, NVIDIA_0_APSIZE,
 | 
				
			||||||
		current_size->size_value);
 | 
							current_size->size_value);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* address to map to */
 | 
						/* address to map to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &apbase);
 | 
						apbase = pci_bus_address(agp_bridge->dev, AGP_APERTURE_BAR);
 | 
				
			||||||
	apbase &= PCI_BASE_ADDRESS_MEM_MASK;
 | 
					 | 
				
			||||||
	agp_bridge->gart_bus_addr = apbase;
 | 
						agp_bridge->gart_bus_addr = apbase;
 | 
				
			||||||
	aplimit = apbase + (current_size->size * 1024 * 1024) - 1;
 | 
						aplimit = apbase + (current_size->size * 1024 * 1024) - 1;
 | 
				
			||||||
	pci_write_config_dword(nvidia_private.dev_2, NVIDIA_2_APBASE, apbase);
 | 
						pci_write_config_dword(nvidia_private.dev_2, NVIDIA_2_APBASE, apbase);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -50,13 +50,12 @@ static void sis_tlbflush(struct agp_memory *mem)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int sis_configure(void)
 | 
					static int sis_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	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, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
	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,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,16 +43,15 @@ static int via_fetch_size(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int via_configure(void)
 | 
					static int via_configure(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	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 to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* 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);
 | 
				
			||||||
| 
						 | 
					@ -132,9 +131,9 @@ static int via_configure_agp3(void)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	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 to */
 | 
				
			||||||
	pci_read_config_dword(agp_bridge->dev, AGP_APBASE, &temp);
 | 
						agp_bridge->gart_bus_addr = pci_bus_address(agp_bridge->dev,
 | 
				
			||||||
	agp_bridge->gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
 | 
											    AGP_APERTURE_BAR);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* 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,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue