diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-06-18 21:52:35 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-06-18 21:52:35 -0700 | 
| commit | 3506ba7b082f9330657b3386c98246d5fda6c698 (patch) | |
| tree | 52bddb8c38a5065002769842d53a9f75ac96f20b | |
| parent | f9d1c6ca2bb1bbfde4a95d9e55ab3b0126825295 (diff) | |
| parent | 62c96b9d0917894c164aa3e474a3ff3bca1554ae (diff) | |
Merge branch 'agp-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6
* 'agp-patches' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/agp-2.6:
  agp/intel: cleanup some serious whitespace badness
  [AGP] intel_agp: Add support for Intel 4 series chipsets
  [AGP] intel_agp: extra stolen mem size available for IGD_GM chipset
  agp: more boolean conversions.
  drivers/char/agp - use bool
  agp: two-stage page destruction issue
  agp/via: fixup pci ids
| -rw-r--r-- | drivers/char/agp/agp.h | 6 | ||||
| -rw-r--r-- | drivers/char/agp/alpha-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/amd-k7-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/amd64-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/ati-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/backend.c | 16 | ||||
| -rw-r--r-- | drivers/char/agp/compat_ioctl.c | 2 | ||||
| -rw-r--r-- | drivers/char/agp/efficeon-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/frontend.c | 12 | ||||
| -rw-r--r-- | drivers/char/agp/generic.c | 35 | ||||
| -rw-r--r-- | drivers/char/agp/hp-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/i460-agp.c | 2 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 235 | ||||
| -rw-r--r-- | drivers/char/agp/nvidia-agp.c | 4 | ||||
| -rw-r--r-- | drivers/char/agp/parisc-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/sgi-agp.c | 8 | ||||
| -rw-r--r-- | drivers/char/agp/sworks-agp.c | 6 | ||||
| -rw-r--r-- | drivers/char/agp/uninorth-agp.c | 10 | ||||
| -rw-r--r-- | drivers/char/agp/via-agp.c | 13 | ||||
| -rw-r--r-- | include/linux/agp_backend.h | 16 | ||||
| -rw-r--r-- | include/linux/agpgart.h | 4 | 
21 files changed, 235 insertions, 168 deletions
| diff --git a/drivers/char/agp/agp.h b/drivers/char/agp/agp.h index 99e6a406efb4..81e14bea54bd 100644 --- a/drivers/char/agp/agp.h +++ b/drivers/char/agp/agp.h @@ -99,8 +99,8 @@ struct agp_bridge_driver {  	const void *aperture_sizes;  	int num_aperture_sizes;  	enum aper_size_type size_type; -	int cant_use_aperture; -	int needs_scratch_page; +	bool cant_use_aperture; +	bool needs_scratch_page;  	const struct gatt_mask *masks;  	int (*fetch_size)(void);  	int (*configure)(void); @@ -278,7 +278,7 @@ void agp_generic_destroy_page(void *addr, int flags);  void agp_free_key(int key);  int agp_num_entries(void);  u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 mode, u32 command); -void agp_device_command(u32 command, int agp_v3); +void agp_device_command(u32 command, bool agp_v3);  int agp_3_5_enable(struct agp_bridge_data *bridge);  void global_cache_flush(void);  void get_agp_version(struct agp_bridge_data *bridge); diff --git a/drivers/char/agp/alpha-agp.c b/drivers/char/agp/alpha-agp.c index e77c17838c8a..5da89f6c6c25 100644 --- a/drivers/char/agp/alpha-agp.c +++ b/drivers/char/agp/alpha-agp.c @@ -80,7 +80,7 @@ static void alpha_core_agp_enable(struct agp_bridge_data *bridge, u32 mode)  	agp->mode.bits.enable = 1;  	agp->ops->configure(agp); -	agp_device_command(agp->mode.lw, 0); +	agp_device_command(agp->mode.lw, false);  }  static int alpha_core_agp_insert_memory(struct agp_memory *mem, off_t pg_start, @@ -126,7 +126,7 @@ struct agp_bridge_driver alpha_core_agp_driver = {  	.aperture_sizes		= alpha_core_agp_sizes,  	.num_aperture_sizes	= 1,  	.size_type		= FIXED_APER_SIZE, -	.cant_use_aperture	= 1, +	.cant_use_aperture	= true,  	.masks			= NULL,  	.fetch_size		= alpha_core_agp_fetch_size, diff --git a/drivers/char/agp/amd-k7-agp.c b/drivers/char/agp/amd-k7-agp.c index 96bdb9296b07..39a0718bc616 100644 --- a/drivers/char/agp/amd-k7-agp.c +++ b/drivers/char/agp/amd-k7-agp.c @@ -314,9 +314,9 @@ static int amd_insert_memory(struct agp_memory *mem, off_t pg_start, int type)  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { diff --git a/drivers/char/agp/amd64-agp.c b/drivers/char/agp/amd64-agp.c index d8200ac8f8cb..13665db363d6 100644 --- a/drivers/char/agp/amd64-agp.c +++ b/drivers/char/agp/amd64-agp.c @@ -90,9 +90,9 @@ static int amd64_insert_memory(struct agp_memory *mem, off_t pg_start, int type)  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { diff --git a/drivers/char/agp/ati-agp.c b/drivers/char/agp/ati-agp.c index 07b4d8ff56e5..3a4566c0d84f 100644 --- a/drivers/char/agp/ati-agp.c +++ b/drivers/char/agp/ati-agp.c @@ -287,10 +287,10 @@ static int ati_insert_memory(struct agp_memory * mem,  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		/*CACHE_FLUSH(); */  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { diff --git a/drivers/char/agp/backend.c b/drivers/char/agp/backend.c index b1bdd015165c..1ec87104e68c 100644 --- a/drivers/char/agp/backend.c +++ b/drivers/char/agp/backend.c @@ -188,10 +188,10 @@ static int agp_backend_initialize(struct agp_bridge_data *bridge)  err_out:  	if (bridge->driver->needs_scratch_page) { -		bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), -						 AGP_PAGE_DESTROY_UNMAP); -		bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), -						 AGP_PAGE_DESTROY_FREE); +		void *va = gart_to_virt(bridge->scratch_page_real); + +		bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); +		bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);  	}  	if (got_gatt)  		bridge->driver->free_gatt_table(bridge); @@ -215,10 +215,10 @@ static void agp_backend_cleanup(struct agp_bridge_data *bridge)  	if (bridge->driver->agp_destroy_page &&  	    bridge->driver->needs_scratch_page) { -		bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), -						 AGP_PAGE_DESTROY_UNMAP); -		bridge->driver->agp_destroy_page(gart_to_virt(bridge->scratch_page_real), -						 AGP_PAGE_DESTROY_FREE); +		void *va = gart_to_virt(bridge->scratch_page_real); + +		bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_UNMAP); +		bridge->driver->agp_destroy_page(va, AGP_PAGE_DESTROY_FREE);  	}  } diff --git a/drivers/char/agp/compat_ioctl.c b/drivers/char/agp/compat_ioctl.c index 39275794fe63..58c57cb2518c 100644 --- a/drivers/char/agp/compat_ioctl.c +++ b/drivers/char/agp/compat_ioctl.c @@ -214,7 +214,7 @@ long compat_agp_ioctl(struct file *file, unsigned int cmd, unsigned long arg)  		ret_val = -EINVAL;  		goto ioctl_out;  	} -	if ((agp_fe.backend_acquired != TRUE) && +	if ((agp_fe.backend_acquired != true) &&  	    (cmd != AGPIOC_ACQUIRE32)) {  		ret_val = -EBUSY;  		goto ioctl_out; diff --git a/drivers/char/agp/efficeon-agp.c b/drivers/char/agp/efficeon-agp.c index cac0009cebc1..8ca6f262ef85 100644 --- a/drivers/char/agp/efficeon-agp.c +++ b/drivers/char/agp/efficeon-agp.c @@ -249,9 +249,9 @@ static int efficeon_insert_memory(struct agp_memory * mem, off_t pg_start, int t  	if (type != 0 || mem->type != 0)  		return -EINVAL; -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	last_page = NULL; @@ -329,7 +329,7 @@ static const struct agp_bridge_driver efficeon_driver = {  	.free_gatt_table	= efficeon_free_gatt_table,  	.insert_memory		= efficeon_insert_memory,  	.remove_memory		= efficeon_remove_memory, -	.cant_use_aperture	= 0,	// 1 might be faster? +	.cant_use_aperture	= false,	// true might be faster?  	// Generic  	.alloc_by_type		= agp_generic_alloc_by_type, diff --git a/drivers/char/agp/frontend.c b/drivers/char/agp/frontend.c index 857b26227d87..e6cb1ab03e06 100644 --- a/drivers/char/agp/frontend.c +++ b/drivers/char/agp/frontend.c @@ -395,7 +395,7 @@ static int agp_remove_controller(struct agp_controller *controller)  	if (agp_fe.current_controller == controller) {  		agp_fe.current_controller = NULL; -		agp_fe.backend_acquired = FALSE; +		agp_fe.backend_acquired = false;  		agp_backend_release(agp_bridge);  	}  	kfree(controller); @@ -443,7 +443,7 @@ static void agp_controller_release_current(struct agp_controller *controller,  	}  	agp_fe.current_controller = NULL; -	agp_fe.used_by_controller = FALSE; +	agp_fe.used_by_controller = false;  	agp_backend_release(agp_bridge);  } @@ -573,7 +573,7 @@ static int agp_mmap(struct file *file, struct vm_area_struct *vma)  	mutex_lock(&(agp_fe.agp_mutex)); -	if (agp_fe.backend_acquired != TRUE) +	if (agp_fe.backend_acquired != true)  		goto out_eperm;  	if (!(test_bit(AGP_FF_IS_VALID, &priv->access_flags))) @@ -768,7 +768,7 @@ int agpioc_acquire_wrap(struct agp_file_private *priv)  	atomic_inc(&agp_bridge->agp_in_use); -	agp_fe.backend_acquired = TRUE; +	agp_fe.backend_acquired = true;  	controller = agp_find_controller_by_pid(priv->my_pid); @@ -778,7 +778,7 @@ int agpioc_acquire_wrap(struct agp_file_private *priv)  		controller = agp_create_controller(priv->my_pid);  		if (controller == NULL) { -			agp_fe.backend_acquired = FALSE; +			agp_fe.backend_acquired = false;  			agp_backend_release(agp_bridge);  			return -ENOMEM;  		} @@ -981,7 +981,7 @@ static long agp_ioctl(struct file *file,  		ret_val = -EINVAL;  		goto ioctl_out;  	} -	if ((agp_fe.backend_acquired != TRUE) && +	if ((agp_fe.backend_acquired != true) &&  	    (cmd != AGPIOC_ACQUIRE)) {  		ret_val = -EBUSY;  		goto ioctl_out; diff --git a/drivers/char/agp/generic.c b/drivers/char/agp/generic.c index 7fc0c99a3a58..564daaa6c7d0 100644 --- a/drivers/char/agp/generic.c +++ b/drivers/char/agp/generic.c @@ -96,13 +96,13 @@ EXPORT_SYMBOL(agp_flush_chipset);  void agp_alloc_page_array(size_t size, struct agp_memory *mem)  {  	mem->memory = NULL; -	mem->vmalloc_flag = 0; +	mem->vmalloc_flag = false;  	if (size <= 2*PAGE_SIZE)  		mem->memory = kmalloc(size, GFP_KERNEL | __GFP_NORETRY);  	if (mem->memory == NULL) {  		mem->memory = vmalloc(size); -		mem->vmalloc_flag = 1; +		mem->vmalloc_flag = true;  	}  }  EXPORT_SYMBOL(agp_alloc_page_array); @@ -188,7 +188,7 @@ void agp_free_memory(struct agp_memory *curr)  	if (curr == NULL)  		return; -	if (curr->is_bound == TRUE) +	if (curr->is_bound)  		agp_unbind_memory(curr);  	if (curr->type >= AGP_USER_TYPES) { @@ -202,10 +202,13 @@ void agp_free_memory(struct agp_memory *curr)  	}  	if (curr->page_count != 0) {  		for (i = 0; i < curr->page_count; i++) { -			curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i]), AGP_PAGE_DESTROY_UNMAP); +			curr->memory[i] = (unsigned long)gart_to_virt(curr->memory[i]); +			curr->bridge->driver->agp_destroy_page((void *)curr->memory[i], +							       AGP_PAGE_DESTROY_UNMAP);  		}  		for (i = 0; i < curr->page_count; i++) { -			curr->bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[i]), AGP_PAGE_DESTROY_FREE); +			curr->bridge->driver->agp_destroy_page((void *)curr->memory[i], +							       AGP_PAGE_DESTROY_FREE);  		}  	}  	agp_free_key(curr->key); @@ -411,20 +414,20 @@ int agp_bind_memory(struct agp_memory *curr, off_t pg_start)  	if (curr == NULL)  		return -EINVAL; -	if (curr->is_bound == TRUE) { +	if (curr->is_bound) {  		printk(KERN_INFO PFX "memory %p is already bound!\n", curr);  		return -EINVAL;  	} -	if (curr->is_flushed == FALSE) { +	if (!curr->is_flushed) {  		curr->bridge->driver->cache_flush(); -		curr->is_flushed = TRUE; +		curr->is_flushed = true;  	}  	ret_val = curr->bridge->driver->insert_memory(curr, pg_start, curr->type);  	if (ret_val != 0)  		return ret_val; -	curr->is_bound = TRUE; +	curr->is_bound = true;  	curr->pg_start = pg_start;  	return 0;  } @@ -446,7 +449,7 @@ int agp_unbind_memory(struct agp_memory *curr)  	if (curr == NULL)  		return -EINVAL; -	if (curr->is_bound != TRUE) { +	if (!curr->is_bound) {  		printk(KERN_INFO PFX "memory %p was not bound!\n", curr);  		return -EINVAL;  	} @@ -456,7 +459,7 @@ int agp_unbind_memory(struct agp_memory *curr)  	if (ret_val != 0)  		return ret_val; -	curr->is_bound = FALSE; +	curr->is_bound = false;  	curr->pg_start = 0;  	return 0;  } @@ -754,7 +757,7 @@ u32 agp_collect_device_status(struct agp_bridge_data *bridge, u32 requested_mode  EXPORT_SYMBOL(agp_collect_device_status); -void agp_device_command(u32 bridge_agpstat, int agp_v3) +void agp_device_command(u32 bridge_agpstat, bool agp_v3)  {  	struct pci_dev *device = NULL;  	int mode; @@ -818,7 +821,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode)  			/* If we have 3.5, we can do the isoch stuff. */  			if (bridge->minor_version >= 5)  				agp_3_5_enable(bridge); -			agp_device_command(bridge_agpstat, TRUE); +			agp_device_command(bridge_agpstat, true);  			return;  		} else {  		    /* Disable calibration cycle in RX91<1> when not in AGP3.0 mode of operation.*/ @@ -835,7 +838,7 @@ void agp_generic_enable(struct agp_bridge_data *bridge, u32 requested_mode)  	}  	/* AGP v<3 */ -	agp_device_command(bridge_agpstat, FALSE); +	agp_device_command(bridge_agpstat, false);  }  EXPORT_SYMBOL(agp_generic_enable); @@ -1083,9 +1086,9 @@ int agp_generic_insert_memory(struct agp_memory * mem, off_t pg_start, int type)  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		bridge->driver->cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { diff --git a/drivers/char/agp/hp-agp.c b/drivers/char/agp/hp-agp.c index cbb0444467ba..80d7317f85c9 100644 --- a/drivers/char/agp/hp-agp.c +++ b/drivers/char/agp/hp-agp.c @@ -353,9 +353,9 @@ hp_zx1_insert_memory (struct agp_memory *mem, off_t pg_start, int type)  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = io_pg_start; i < mem->page_count; i++) { @@ -437,7 +437,7 @@ const struct agp_bridge_driver hp_zx1_driver = {  	.agp_alloc_page		= agp_generic_alloc_page,  	.agp_destroy_page	= agp_generic_destroy_page,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture	= 1, +	.cant_use_aperture	= true,  };  static int __init diff --git a/drivers/char/agp/i460-agp.c b/drivers/char/agp/i460-agp.c index 76f581c85a7d..e587eebebc67 100644 --- a/drivers/char/agp/i460-agp.c +++ b/drivers/char/agp/i460-agp.c @@ -580,7 +580,7 @@ const struct agp_bridge_driver intel_i460_driver = {  	.alloc_by_type		= agp_generic_alloc_by_type,  	.free_by_type		= agp_generic_free_by_type,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture	= 1, +	.cant_use_aperture	= true,  };  static int __devinit agp_intel_i460_probe(struct pci_dev *pdev, diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index eeea50a1d22a..30aa01b738b4 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c @@ -34,6 +34,12 @@  #define PCI_DEVICE_ID_INTEL_Q33_IG          0x29D2  #define PCI_DEVICE_ID_INTEL_IGD_HB          0x2A40  #define PCI_DEVICE_ID_INTEL_IGD_IG          0x2A42 +#define PCI_DEVICE_ID_INTEL_IGD_E_HB        0x2E00 +#define PCI_DEVICE_ID_INTEL_IGD_E_IG        0x2E02 +#define PCI_DEVICE_ID_INTEL_Q45_HB          0x2E10 +#define PCI_DEVICE_ID_INTEL_Q45_IG          0x2E12 +#define PCI_DEVICE_ID_INTEL_G45_HB          0x2E20 +#define PCI_DEVICE_ID_INTEL_G45_IG          0x2E22  /* cover 915 and 945 variants */  #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ @@ -55,6 +61,10 @@  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \  		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q33_HB) +#define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \ +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ +		agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB) +  extern int agp_memory_reserved; @@ -80,8 +90,13 @@ extern int agp_memory_reserved;  #define I915_PTEADDR	0x1C  #define I915_GMCH_GMS_STOLEN_48M	(0x6 << 4)  #define I915_GMCH_GMS_STOLEN_64M	(0x7 << 4) -#define G33_GMCH_GMS_STOLEN_128M       (0x8 << 4) -#define G33_GMCH_GMS_STOLEN_256M       (0x9 << 4) +#define G33_GMCH_GMS_STOLEN_128M	(0x8 << 4) +#define G33_GMCH_GMS_STOLEN_256M	(0x9 << 4) +#define INTEL_GMCH_GMS_STOLEN_96M	(0xa << 4) +#define INTEL_GMCH_GMS_STOLEN_160M	(0xb << 4) +#define INTEL_GMCH_GMS_STOLEN_224M	(0xc << 4) +#define INTEL_GMCH_GMS_STOLEN_352M	(0xd << 4) +  #define I915_IFPADDR    0x60  /* Intel 965G registers */ @@ -325,7 +340,7 @@ static int intel_i810_insert_entries(struct agp_memory *mem, off_t pg_start,  out:  	ret = 0;  out_err: -	mem->is_flushed = 1; +	mem->is_flushed = true;  	return ret;  } @@ -418,9 +433,11 @@ static void intel_i810_free_by_type(struct agp_memory *curr)  		if (curr->page_count == 4)  			i8xx_destroy_pages(gart_to_virt(curr->memory[0]));  		else { -			agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), +			void *va = gart_to_virt(curr->memory[0]); + +			agp_bridge->driver->agp_destroy_page(va,  							     AGP_PAGE_DESTROY_UNMAP); -			agp_bridge->driver->agp_destroy_page(gart_to_virt(curr->memory[0]), +			agp_bridge->driver->agp_destroy_page(va,  							     AGP_PAGE_DESTROY_FREE);  		}  		agp_free_page_array(curr); @@ -504,6 +521,10 @@ static void intel_i830_init_gtt_entries(void)  			size = 512;  		}  		size += 4; +	} else if (IS_G4X) { +		/* On 4 series hardware, GTT stolen is separate from graphics +		 * stolen, ignore it in stolen gtt entries counting */ +		size = 0;  	} else {  		/* On previous hardware, the GTT size was just what was  		 * required to map the aperture. @@ -552,30 +573,54 @@ static void intel_i830_init_gtt_entries(void)  			break;  		case I915_GMCH_GMS_STOLEN_48M:  			/* Check it's really I915G */ -			if (IS_I915 || IS_I965 || IS_G33) +			if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)  				gtt_entries = MB(48) - KB(size);  			else  				gtt_entries = 0;  			break;  		case I915_GMCH_GMS_STOLEN_64M:  			/* Check it's really I915G */ -			if (IS_I915 || IS_I965 || IS_G33) +			if (IS_I915 || IS_I965 || IS_G33 || IS_G4X)  				gtt_entries = MB(64) - KB(size);  			else  				gtt_entries = 0;  			break;  		case G33_GMCH_GMS_STOLEN_128M: -			if (IS_G33) +			if (IS_G33 || IS_I965 || IS_G4X)  				gtt_entries = MB(128) - KB(size);  			else  				gtt_entries = 0;  			break;  		case G33_GMCH_GMS_STOLEN_256M: -			if (IS_G33) +			if (IS_G33 || IS_I965 || IS_G4X)  				gtt_entries = MB(256) - KB(size);  			else  				gtt_entries = 0;  			break; +		case INTEL_GMCH_GMS_STOLEN_96M: +			if (IS_I965 || IS_G4X) +				gtt_entries = MB(96) - KB(size); +			else +				gtt_entries = 0; +			break; +		case INTEL_GMCH_GMS_STOLEN_160M: +			if (IS_I965 || IS_G4X) +				gtt_entries = MB(160) - KB(size); +			else +				gtt_entries = 0; +			break; +		case INTEL_GMCH_GMS_STOLEN_224M: +			if (IS_I965 || IS_G4X) +				gtt_entries = MB(224) - KB(size); +			else +				gtt_entries = 0; +			break; +		case INTEL_GMCH_GMS_STOLEN_352M: +			if (IS_I965 || IS_G4X) +				gtt_entries = MB(352) - KB(size); +			else +				gtt_entries = 0; +			break;  		default:  			gtt_entries = 0;  			break; @@ -793,7 +838,7 @@ static int intel_i830_insert_entries(struct agp_memory *mem, off_t pg_start,  out:  	ret = 0;  out_err: -	mem->is_flushed = 1; +	mem->is_flushed = true;  	return ret;  } @@ -1020,7 +1065,7 @@ static int intel_i915_insert_entries(struct agp_memory *mem, off_t pg_start,   out:  	ret = 0;   out_err: -	mem->is_flushed = 1; +	mem->is_flushed = true;  	return ret;  } @@ -1134,53 +1179,64 @@ static unsigned long intel_i965_mask_memory(struct agp_bridge_data *bridge,  	return addr | bridge->driver->masks[type].mask;  } +static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) +{ +	switch (agp_bridge->dev->device) { +	case PCI_DEVICE_ID_INTEL_IGD_HB: +	case PCI_DEVICE_ID_INTEL_IGD_E_HB: +	case PCI_DEVICE_ID_INTEL_Q45_HB: +	case PCI_DEVICE_ID_INTEL_G45_HB: +		*gtt_offset = *gtt_size = MB(2); +		break; +	default: +		*gtt_offset = *gtt_size = KB(512); +	} +} +  /* The intel i965 automatically initializes the agp aperture during POST.   * Use the memory already set aside for in the GTT.   */  static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge)  { -       int page_order; -       struct aper_size_info_fixed *size; -       int num_entries; -       u32 temp; -       int gtt_offset, gtt_size; +	int page_order; +	struct aper_size_info_fixed *size; +	int num_entries; +	u32 temp; +	int gtt_offset, gtt_size; -       size = agp_bridge->current_size; -       page_order = size->page_order; -       num_entries = size->num_entries; -       agp_bridge->gatt_table_real = NULL; +	size = agp_bridge->current_size; +	page_order = size->page_order; +	num_entries = size->num_entries; +	agp_bridge->gatt_table_real = NULL; -       pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); +	pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); -       temp &= 0xfff00000; +	temp &= 0xfff00000; -       if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_HB) -	       gtt_offset = gtt_size = MB(2); -       else -	       gtt_offset = gtt_size = KB(512); +	intel_i965_get_gtt_range(>t_offset, >t_size); -       intel_private.gtt = ioremap((temp + gtt_offset) , gtt_size); +	intel_private.gtt = ioremap((temp + gtt_offset) , gtt_size); -       if (!intel_private.gtt) -	       return -ENOMEM; +	if (!intel_private.gtt) +		return -ENOMEM; -       intel_private.registers = ioremap(temp, 128 * 4096); -       if (!intel_private.registers) { +	intel_private.registers = ioremap(temp, 128 * 4096); +	if (!intel_private.registers) {  		iounmap(intel_private.gtt);  		return -ENOMEM;  	} -       temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; -       global_cache_flush();   /* FIXME: ? */ +	temp = readl(intel_private.registers+I810_PGETBL_CTL) & 0xfffff000; +	global_cache_flush();   /* FIXME: ? */ -       /* we have to call this as early as possible after the MMIO base address is known */ -       intel_i830_init_gtt_entries(); +	/* we have to call this as early as possible after the MMIO base address is known */ +	intel_i830_init_gtt_entries(); -       agp_bridge->gatt_table = NULL; +	agp_bridge->gatt_table = NULL; -       agp_bridge->gatt_bus_addr = temp; +	agp_bridge->gatt_bus_addr = temp; -       return 0; +	return 0;  } @@ -1656,7 +1712,7 @@ static const struct agp_bridge_driver intel_810_driver = {  	.aperture_sizes		= intel_i810_sizes,  	.size_type		= FIXED_APER_SIZE,  	.num_aperture_sizes	= 2, -	.needs_scratch_page	= TRUE, +	.needs_scratch_page	= true,  	.configure		= intel_i810_configure,  	.fetch_size		= intel_i810_fetch_size,  	.cleanup		= intel_i810_cleanup, @@ -1697,7 +1753,7 @@ static const struct agp_bridge_driver intel_815_driver = {  	.free_by_type		= agp_generic_free_by_type,  	.agp_alloc_page		= agp_generic_alloc_page,  	.agp_destroy_page	= agp_generic_destroy_page, -	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, +	.agp_type_to_mask_type	= agp_generic_type_to_mask_type,  };  static const struct agp_bridge_driver intel_830_driver = { @@ -1705,7 +1761,7 @@ static const struct agp_bridge_driver intel_830_driver = {  	.aperture_sizes		= intel_i830_sizes,  	.size_type		= FIXED_APER_SIZE,  	.num_aperture_sizes	= 4, -	.needs_scratch_page	= TRUE, +	.needs_scratch_page	= true,  	.configure		= intel_i830_configure,  	.fetch_size		= intel_i830_fetch_size,  	.cleanup		= intel_i830_cleanup, @@ -1876,7 +1932,7 @@ static const struct agp_bridge_driver intel_915_driver = {  	.aperture_sizes		= intel_i830_sizes,  	.size_type		= FIXED_APER_SIZE,  	.num_aperture_sizes	= 4, -	.needs_scratch_page	= TRUE, +	.needs_scratch_page	= true,  	.configure		= intel_i915_configure,  	.fetch_size		= intel_i9xx_fetch_size,  	.cleanup		= intel_i915_cleanup, @@ -1898,28 +1954,26 @@ static const struct agp_bridge_driver intel_915_driver = {  };  static const struct agp_bridge_driver intel_i965_driver = { -       .owner                  = THIS_MODULE, -       .aperture_sizes         = intel_i830_sizes, -       .size_type              = FIXED_APER_SIZE, -       .num_aperture_sizes     = 4, -       .needs_scratch_page     = TRUE, -       .configure              = intel_i915_configure, -       .fetch_size             = intel_i9xx_fetch_size, -       .cleanup                = intel_i915_cleanup, -       .tlb_flush              = intel_i810_tlbflush, -       .mask_memory            = intel_i965_mask_memory, -       .masks                  = intel_i810_masks, -       .agp_enable             = intel_i810_agp_enable, -       .cache_flush            = global_cache_flush, -       .create_gatt_table      = intel_i965_create_gatt_table, -       .free_gatt_table        = intel_i830_free_gatt_table, -       .insert_memory          = intel_i915_insert_entries, -       .remove_memory          = intel_i915_remove_entries, -       .alloc_by_type          = intel_i830_alloc_by_type, -       .free_by_type           = intel_i810_free_by_type, -       .agp_alloc_page         = agp_generic_alloc_page, -       .agp_destroy_page       = agp_generic_destroy_page, -       .agp_type_to_mask_type  = intel_i830_type_to_mask_type, +	.owner			= THIS_MODULE, +	.aperture_sizes		= intel_i830_sizes, +	.size_type		= FIXED_APER_SIZE, +	.num_aperture_sizes	= 4, +	.needs_scratch_page	= true, +	.cleanup		= intel_i915_cleanup, +	.tlb_flush		= intel_i810_tlbflush, +	.mask_memory		= intel_i965_mask_memory, +	.masks			= intel_i810_masks, +	.agp_enable		= intel_i810_agp_enable, +	.cache_flush		= global_cache_flush, +	.create_gatt_table	= intel_i965_create_gatt_table, +	.free_gatt_table	= intel_i830_free_gatt_table, +	.insert_memory		= intel_i915_insert_entries, +	.remove_memory		= intel_i915_remove_entries, +	.alloc_by_type		= intel_i830_alloc_by_type, +	.free_by_type		= intel_i810_free_by_type, +	.agp_alloc_page		= agp_generic_alloc_page, +	.agp_destroy_page	= agp_generic_destroy_page, +	.agp_type_to_mask_type	= intel_i830_type_to_mask_type,  	.chipset_flush		= intel_i915_chipset_flush,  }; @@ -1948,28 +2002,28 @@ static const struct agp_bridge_driver intel_7505_driver = {  };  static const struct agp_bridge_driver intel_g33_driver = { -	.owner                  = THIS_MODULE, -	.aperture_sizes         = intel_i830_sizes, -	.size_type              = FIXED_APER_SIZE, -	.num_aperture_sizes     = 4, -	.needs_scratch_page     = TRUE, -	.configure              = intel_i915_configure, -	.fetch_size             = intel_i9xx_fetch_size, -	.cleanup                = intel_i915_cleanup, -	.tlb_flush              = intel_i810_tlbflush, -	.mask_memory            = intel_i965_mask_memory, -	.masks                  = intel_i810_masks, -	.agp_enable             = intel_i810_agp_enable, -	.cache_flush            = global_cache_flush, -	.create_gatt_table      = intel_i915_create_gatt_table, -	.free_gatt_table        = intel_i830_free_gatt_table, -	.insert_memory          = intel_i915_insert_entries, -	.remove_memory          = intel_i915_remove_entries, -	.alloc_by_type          = intel_i830_alloc_by_type, -	.free_by_type           = intel_i810_free_by_type, -	.agp_alloc_page         = agp_generic_alloc_page, -	.agp_destroy_page       = agp_generic_destroy_page, -	.agp_type_to_mask_type  = intel_i830_type_to_mask_type, +	.owner			= THIS_MODULE, +	.aperture_sizes		= intel_i830_sizes, +	.size_type		= FIXED_APER_SIZE, +	.num_aperture_sizes	= 4, +	.needs_scratch_page	= true, +	.configure		= intel_i915_configure, +	.fetch_size		= intel_i9xx_fetch_size, +	.cleanup		= intel_i915_cleanup, +	.tlb_flush		= intel_i810_tlbflush, +	.mask_memory		= intel_i965_mask_memory, +	.masks			= intel_i810_masks, +	.agp_enable		= intel_i810_agp_enable, +	.cache_flush		= global_cache_flush, +	.create_gatt_table	= intel_i915_create_gatt_table, +	.free_gatt_table	= intel_i830_free_gatt_table, +	.insert_memory		= intel_i915_insert_entries, +	.remove_memory		= intel_i915_remove_entries, +	.alloc_by_type		= intel_i830_alloc_by_type, +	.free_by_type		= intel_i810_free_by_type, +	.agp_alloc_page		= agp_generic_alloc_page, +	.agp_destroy_page	= agp_generic_destroy_page, +	.agp_type_to_mask_type	= intel_i830_type_to_mask_type,  	.chipset_flush		= intel_i915_chipset_flush,  }; @@ -2063,6 +2117,12 @@ static const struct intel_driver_description {  		NULL, &intel_g33_driver },  	{ PCI_DEVICE_ID_INTEL_IGD_HB, PCI_DEVICE_ID_INTEL_IGD_IG, 0,  	    "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, +	{ PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0, +	    "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, +	{ PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, +	    "Q45/Q43", NULL, &intel_i965_driver }, +	{ PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0, +	    "G45/G43", NULL, &intel_i965_driver },  	{ 0, 0, 0, NULL, NULL, NULL }  }; @@ -2254,6 +2314,9 @@ static struct pci_device_id agp_intel_pci_table[] = {  	ID(PCI_DEVICE_ID_INTEL_Q35_HB),  	ID(PCI_DEVICE_ID_INTEL_Q33_HB),  	ID(PCI_DEVICE_ID_INTEL_IGD_HB), +	ID(PCI_DEVICE_ID_INTEL_IGD_E_HB), +	ID(PCI_DEVICE_ID_INTEL_Q45_HB), +	ID(PCI_DEVICE_ID_INTEL_G45_HB),  	{ }  }; diff --git a/drivers/char/agp/nvidia-agp.c b/drivers/char/agp/nvidia-agp.c index 225ed2a53d45..eaceb61ba2dc 100644 --- a/drivers/char/agp/nvidia-agp.c +++ b/drivers/char/agp/nvidia-agp.c @@ -214,9 +214,9 @@ static int nvidia_insert_memory(struct agp_memory *mem, off_t pg_start, int type  			return -EBUSY;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) {  		writel(agp_bridge->driver->mask_memory(agp_bridge, diff --git a/drivers/char/agp/parisc-agp.c b/drivers/char/agp/parisc-agp.c index 2939e3570f9d..8c42dcc5958c 100644 --- a/drivers/char/agp/parisc-agp.c +++ b/drivers/char/agp/parisc-agp.c @@ -141,9 +141,9 @@ parisc_agp_insert_memory(struct agp_memory *mem, off_t pg_start, int type)  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = io_pg_start; i < mem->page_count; i++) { @@ -226,7 +226,7 @@ static const struct agp_bridge_driver parisc_agp_driver = {  	.agp_alloc_page		= agp_generic_alloc_page,  	.agp_destroy_page	= agp_generic_destroy_page,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture	= 1, +	.cant_use_aperture	= true,  };  static int __init diff --git a/drivers/char/agp/sgi-agp.c b/drivers/char/agp/sgi-agp.c index 98cf8abb3e57..b972d83bb1b2 100644 --- a/drivers/char/agp/sgi-agp.c +++ b/drivers/char/agp/sgi-agp.c @@ -182,9 +182,9 @@ static int sgi_tioca_insert_memory(struct agp_memory *mem, off_t pg_start,  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		bridge->driver->cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { @@ -264,8 +264,8 @@ const struct agp_bridge_driver sgi_tioca_driver = {  	.agp_alloc_page = sgi_tioca_alloc_page,  	.agp_destroy_page = agp_generic_destroy_page,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture = 1, -	.needs_scratch_page = 0, +	.cant_use_aperture = true, +	.needs_scratch_page = false,  	.num_aperture_sizes = 1,  }; diff --git a/drivers/char/agp/sworks-agp.c b/drivers/char/agp/sworks-agp.c index e08934e58f32..0e054c134490 100644 --- a/drivers/char/agp/sworks-agp.c +++ b/drivers/char/agp/sworks-agp.c @@ -339,9 +339,9 @@ static int serverworks_insert_memory(struct agp_memory *mem,  		j++;  	} -	if (mem->is_flushed == FALSE) { +	if (!mem->is_flushed) {  		global_cache_flush(); -		mem->is_flushed = TRUE; +		mem->is_flushed = true;  	}  	for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { @@ -412,7 +412,7 @@ static void serverworks_agp_enable(struct agp_bridge_data *bridge, u32 mode)  			       bridge->capndx + PCI_AGP_COMMAND,  			       command); -	agp_device_command(command, 0); +	agp_device_command(command, false);  }  static const struct agp_bridge_driver sworks_driver = { diff --git a/drivers/char/agp/uninorth-agp.c b/drivers/char/agp/uninorth-agp.c index 42c0a600b1ac..d2fa3cfca02a 100644 --- a/drivers/char/agp/uninorth-agp.c +++ b/drivers/char/agp/uninorth-agp.c @@ -281,10 +281,10 @@ static void uninorth_agp_enable(struct agp_bridge_data *bridge, u32 mode)  	if (uninorth_rev >= 0x30) {  		/* This is an AGP V3 */ -		agp_device_command(command, (status & AGPSTAT_MODE_3_0)); +		agp_device_command(command, (status & AGPSTAT_MODE_3_0) != 0);  	} else {  		/* AGP V2 */ -		agp_device_command(command, 0); +		agp_device_command(command, false);  	}  	uninorth_tlbflush(NULL); @@ -511,7 +511,7 @@ const struct agp_bridge_driver uninorth_agp_driver = {  	.agp_alloc_page		= agp_generic_alloc_page,  	.agp_destroy_page	= agp_generic_destroy_page,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture	= 1, +	.cant_use_aperture	= true,  };  const struct agp_bridge_driver u3_agp_driver = { @@ -536,8 +536,8 @@ const struct agp_bridge_driver u3_agp_driver = {  	.agp_alloc_page		= agp_generic_alloc_page,  	.agp_destroy_page	= agp_generic_destroy_page,  	.agp_type_to_mask_type  = agp_generic_type_to_mask_type, -	.cant_use_aperture	= 1, -	.needs_scratch_page	= 1, +	.cant_use_aperture	= true, +	.needs_scratch_page	= true,  };  static struct agp_device_ids uninorth_agp_device_ids[] __devinitdata = { diff --git a/drivers/char/agp/via-agp.c b/drivers/char/agp/via-agp.c index 0ecc54d327bc..7b36476dff41 100644 --- a/drivers/char/agp/via-agp.c +++ b/drivers/char/agp/via-agp.c @@ -389,11 +389,20 @@ static struct agp_device_ids via_agp_device_ids[] __devinitdata =  		.device_id  = PCI_DEVICE_ID_VIA_VT3324,  		.chipset_name   = "CX700",  	}, -	/* VT3336 */ +	/* VT3336 - this is a chipset for AMD Athlon/K8 CPU. Due to K8's unique +	 * architecture, the AGP resource and behavior are different from +	 * the traditional AGP which resides only in chipset. AGP is used +	 * by 3D driver which wasn't available for the VT3336 and VT3364 +	 * generation until now.  Unfortunately, by testing, VT3364 works +	 * but VT3336 doesn't. - explaination from via, just leave this as +	 * as a placeholder to avoid future patches adding it back in. +	 */ +#if 0  	{  		.device_id  = PCI_DEVICE_ID_VIA_VT3336,  		.chipset_name   = "VT3336",  	}, +#endif  	/* P4M890 */  	{  		.device_id  = PCI_DEVICE_ID_VIA_P4M890, @@ -546,8 +555,8 @@ static const struct pci_device_id agp_via_pci_table[] = {  	ID(PCI_DEVICE_ID_VIA_3296_0),  	ID(PCI_DEVICE_ID_VIA_P4M800CE),  	ID(PCI_DEVICE_ID_VIA_VT3324), -	ID(PCI_DEVICE_ID_VIA_VT3336),  	ID(PCI_DEVICE_ID_VIA_P4M890), +	ID(PCI_DEVICE_ID_VIA_VT3364),  	{ }  }; diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h index 661d90d6cf7c..972b12bcfb36 100644 --- a/include/linux/agp_backend.h +++ b/include/linux/agp_backend.h @@ -30,14 +30,6 @@  #ifndef _AGP_BACKEND_H  #define _AGP_BACKEND_H 1 -#ifndef TRUE -#define TRUE 1 -#endif - -#ifndef FALSE -#define FALSE 0 -#endif -  enum chipset_type {  	NOT_SUPPORTED,  	SUPPORTED, @@ -57,7 +49,7 @@ struct agp_kern_info {  	size_t aper_size;  	int max_memory;		/* In pages */  	int current_memory; -	int cant_use_aperture; +	bool cant_use_aperture;  	unsigned long page_mask;  	struct vm_operations_struct *vm_ops;  }; @@ -83,9 +75,9 @@ struct agp_memory {  	off_t pg_start;  	u32 type;  	u32 physical; -	u8 is_bound; -	u8 is_flushed; -        u8 vmalloc_flag; +	bool is_bound; +	bool is_flushed; +        bool vmalloc_flag;  };  #define AGP_NORMAL_MEMORY 0 diff --git a/include/linux/agpgart.h b/include/linux/agpgart.h index 62aef589eb94..c8fdb6e658e1 100644 --- a/include/linux/agpgart.h +++ b/include/linux/agpgart.h @@ -206,8 +206,8 @@ struct agp_front_data {  	struct agp_controller *current_controller;  	struct agp_controller *controllers;  	struct agp_file_private *file_priv_list; -	u8 used_by_controller; -	u8 backend_acquired; +	bool used_by_controller; +	bool backend_acquired;  };  #endif				/* __KERNEL__ */ | 
