diff options
Diffstat (limited to 'shared-core')
| -rw-r--r-- | shared-core/i915_drv.h | 10 | ||||
| -rw-r--r-- | shared-core/i915_init.c | 51 | ||||
| -rw-r--r-- | shared-core/via_dma.c | 6 | 
3 files changed, 20 insertions, 47 deletions
diff --git a/shared-core/i915_drv.h b/shared-core/i915_drv.h index 8c2b4817..2dd76d30 100644 --- a/shared-core/i915_drv.h +++ b/shared-core/i915_drv.h @@ -907,8 +907,8 @@ extern int i915_wait_ring(drm_device_t * dev, int n, const char *caller);  #define IS_I855(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82855GM_IG)  #define IS_I865G(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82865_IG) -#define IS_I915G(pI810) (dev->pci_device == PCI_DEVICE_ID_INTEL_82915G_IG)/* || dev->pci_device == PCI_DEVICE_ID_INTELPCI_CHIP_E7221_G)*/ -#define IS_I915GM(pI810) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82915GM_IG) +#define IS_I915G(dev) (dev->pci_device == PCI_DEVICE_ID_INTEL_82915G_IG)/* || dev->pci_device == PCI_DEVICE_ID_INTELPCI_CHIP_E7221_G)*/ +#define IS_I915GM(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82915GM_IG)  #define IS_I945G(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82945G_IG)  #define IS_I945GM(dev) ((dev)->pci_device == PCI_DEVICE_ID_INTEL_82945GM_IG) @@ -918,9 +918,11 @@ extern int i915_wait_ring(drm_device_t * dev, int n, const char *caller);  		       (dev)->pci_device == 0x29A2) -#define IS_I9XX(pI810) (IS_I915G(pI810) || IS_I915GM(pI810) || IS_I945G(pI810) || IS_I945GM(pI810) || IS_I965G(pI810)) +#define IS_I9XX(dev) (IS_I915G(dev) || IS_I915GM(dev) || IS_I945G(dev) || \ +		      IS_I945GM(dev) || IS_I965G(dev)) -#define IS_MOBILE(pI810) (IS_I830(pI810) || IS_I85X(pI810) || IS_I915GM(pI810) || IS_I945GM(pI810)) +#define IS_MOBILE(dev) (IS_I830(dev) || IS_I85X(dev) || IS_I915GM(dev) || \ +			IS_I945GM(dev))  #define PRIMARY_RINGBUFFER_SIZE         (128*1024) diff --git a/shared-core/i915_init.c b/shared-core/i915_init.c index 5872aeb3..0c9ef4d4 100644 --- a/shared-core/i915_init.c +++ b/shared-core/i915_init.c @@ -112,13 +112,9 @@ int i915_probe_agp(struct pci_dev *pdev, unsigned long *aperture_size,  int i915_driver_load(drm_device_t *dev, unsigned long flags)  {  	drm_i915_private_t *dev_priv; -	drm_i915_init_t init; -	drm_buffer_object_t *entry; -	drm_local_map_t *map; -	struct drm_framebuffer *fb;  	unsigned long agp_size, prealloc_size;  	unsigned long sareapage; -	int hsize, vsize, bytes_per_pixel, size, ret; +	int size, ret;  	dev_priv = drm_alloc(sizeof(drm_i915_private_t), DRM_MEM_DRIVER);  	if (dev_priv == NULL) @@ -150,6 +146,8 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)  		return -ENODEV;  	} +	DRM_DEBUG("fb_base: 0x%08lx\n", dev->mode_config.fb_base); +  	ret = drm_addmap(dev, dev_priv->mmiobase, dev_priv->mmiolen,  			 _DRM_REGISTERS, _DRM_READ_ONLY|_DRM_DRIVER, &dev_priv->mmio_map);  	if (ret != 0) { @@ -177,9 +175,8 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)  	drm_bo_driver_init(dev);  	i915_probe_agp(dev->pdev, &agp_size, &prealloc_size); -	DRM_DEBUG("setting up %d bytes of PRIV0 space\n", prealloc_size); -	drm_bo_init_mm(dev, DRM_BO_MEM_PRIV0, 0, -		       prealloc_size >> PAGE_SHIFT); +	DRM_DEBUG("setting up %ld bytes of PRIV0 space\n", prealloc_size); +	drm_bo_init_mm(dev, DRM_BO_MEM_PRIV0, 0, prealloc_size >> PAGE_SHIFT);  	I915_WRITE(LP_RING + RING_LEN, 0);  	I915_WRITE(LP_RING + RING_HEAD, 0); @@ -203,12 +200,14 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)  	dev_priv->ring.Size = size;  	dev_priv->ring.tail_mask = dev_priv->ring.Size - 1; +	/* FIXME: need wrapper with PCI mem checks */  	ret = drm_mem_reg_ioremap(dev, &dev_priv->ring_buffer->mem,  				  &dev_priv->ring.virtual_start);  	if (ret)  		DRM_ERROR("error mapping ring buffer: %d\n", ret); -	DRM_DEBUG("ring start %08X, %08X, %08X\n", dev_priv->ring.Start, dev_priv->ring.virtual_start, dev_priv->ring.Size); +	DRM_DEBUG("ring start %08lX, %p, %08lX\n", dev_priv->ring.Start, +		  dev_priv->ring.virtual_start, dev_priv->ring.Size);  	dev_priv->sarea_priv->pf_current_page = 0; @@ -240,46 +239,15 @@ int i915_driver_load(drm_device_t *dev, unsigned long flags)  	I915_WRITE(0x02080, dev_priv->dma_status_page);  	DRM_DEBUG("Enabled hardware status page\n"); -#if 1 -	/* Allocate scanout buffer and command ring */ -	/* FIXME: types and other args correct? */ -	hsize = 1280; -	vsize = 800; -	bytes_per_pixel = 4; -	size = hsize * vsize * bytes_per_pixel; -	drm_buffer_object_create(dev, size, drm_bo_type_kernel, -				 DRM_BO_FLAG_READ | DRM_BO_FLAG_WRITE | -				 DRM_BO_FLAG_MEM_PRIV0 | DRM_BO_FLAG_NO_MOVE, -				 0, 0, 0, -				 &entry); -#endif  	intel_modeset_init(dev); +	drm_initial_config(dev, false); -#if 1 -	fb = drm_framebuffer_create(dev); -	if (!fb) { -		DRM_ERROR("failed to allocate fb\n"); -		return -EINVAL; -	} - -	fb->width = hsize; -	fb->height = vsize; -	fb->pitch = hsize; -	fb->bits_per_pixel = bytes_per_pixel * 8; -	fb->depth = bytes_per_pixel * 8; -	fb->offset = entry->offset; -	fb->bo = entry; - -	drm_initial_config(dev, fb, false); -	drmfb_probe(dev, fb); -#endif  	return 0;  }  int i915_driver_unload(drm_device_t *dev)  {  	drm_i915_private_t *dev_priv = dev->dev_private; -	struct drm_framebuffer *fb;  	if (dev_priv->status_page_dmah) {  		drm_pci_free(dev, dev_priv->status_page_dmah); @@ -297,6 +265,7 @@ int i915_driver_unload(drm_device_t *dev)  	drm_mem_reg_iounmap(dev, &dev_priv->ring_buffer->mem,  			    dev_priv->ring.virtual_start); +	DRM_DEBUG("usage is %d\n", dev_priv->ring_buffer->usage);  	mutex_lock(&dev->struct_mutex);  	drm_bo_usage_deref_locked(dev_priv->ring_buffer);  	mutex_unlock(&dev->struct_mutex); diff --git a/shared-core/via_dma.c b/shared-core/via_dma.c index 8c5a5c64..c73634e4 100644 --- a/shared-core/via_dma.c +++ b/shared-core/via_dma.c @@ -430,8 +430,10 @@ static int via_hook_segment(drm_via_private_t *dev_priv,  	paused = 0;  	via_flush_write_combine(); -	*dev_priv->last_pause_ptr = pause_addr_lo; +	(void) *(volatile uint32_t *)(via_get_dma(dev_priv) -1); +	*paused_at = pause_addr_lo;  	via_flush_write_combine(); +	(void) *paused_at;  	reader = *(dev_priv->hw_addr_ptr);  	ptr = ((volatile char *)paused_at - dev_priv->dma_ptr) +  		dev_priv->dma_offset + (uint32_t) dev_priv->agpAddr + 4; @@ -536,7 +538,7 @@ static void via_cmdbuf_start(drm_via_private_t * dev_priv)  			      &pause_addr_hi, & pause_addr_lo, 1) - 1;  	via_flush_write_combine(); -	while(! *dev_priv->last_pause_ptr); +	(void) *(volatile uint32_t *)dev_priv->last_pause_ptr;  	VIA_WRITE(VIA_REG_TRANSET, (HC_ParaType_PreCR << 16));  	VIA_WRITE(VIA_REG_TRANSPACE, command);  | 
