Subversion Repositories Kolibri OS

Rev

Rev 4104 | Rev 5060 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4104 Rev 4560
Line 100... Line 100...
100
	if (dmah->vaddr) {
100
	if (dmah->vaddr) {
101
		/* XXX - Is virt_to_page() legal for consistent mem? */
101
		/* XXX - Is virt_to_page() legal for consistent mem? */
102
		/* Unreserve */
102
		/* Unreserve */
103
		for (addr = (unsigned long)dmah->vaddr, sz = dmah->size;
103
		for (addr = (unsigned long)dmah->vaddr, sz = dmah->size;
104
		     sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) {
104
		     sz > 0; addr += PAGE_SIZE, sz -= PAGE_SIZE) {
105
			ClearPageReserved(virt_to_page(addr));
105
			ClearPageReserved(virt_to_page((void *)addr));
106
		}
106
		}
107
		dma_free_coherent(&dev->pdev->dev, dmah->size, dmah->vaddr,
107
		dma_free_coherent(&dev->pdev->dev, dmah->size, dmah->vaddr,
108
				  dmah->busaddr);
108
				  dmah->busaddr);
109
	}
109
	}
110
}
110
}
Line 258... Line 258...
258
	DRM_DEBUG("%d:%d:%d => IRQ %d\n", p->busnum, p->devnum, p->funcnum,
258
	DRM_DEBUG("%d:%d:%d => IRQ %d\n", p->busnum, p->devnum, p->funcnum,
259
		  p->irq);
259
		  p->irq);
260
	return 0;
260
	return 0;
261
}
261
}
Line 262... Line 262...
262
 
262
 
263
static int drm_pci_agp_init(struct drm_device *dev)
263
static void drm_pci_agp_init(struct drm_device *dev)
264
{
264
{
265
	if (drm_core_has_AGP(dev)) {
265
	if (drm_core_check_feature(dev, DRIVER_USE_AGP)) {
266
		if (drm_pci_device_is_agp(dev))
266
		if (drm_pci_device_is_agp(dev))
267
			dev->agp = drm_agp_init(dev);
-
 
268
		if (drm_core_check_feature(dev, DRIVER_REQUIRE_AGP)
-
 
269
		    && (dev->agp == NULL)) {
-
 
270
			DRM_ERROR("Cannot initialize the agpgart module.\n");
-
 
271
			return -EINVAL;
-
 
272
		}
267
			dev->agp = drm_agp_init(dev);
273
		if (dev->agp) {
268
		if (dev->agp) {
274
			dev->agp->agp_mtrr = arch_phys_wc_add(
269
			dev->agp->agp_mtrr = arch_phys_wc_add(
275
				dev->agp->agp_info.aper_base,
270
				dev->agp->agp_info.aper_base,
276
				dev->agp->agp_info.aper_size *
271
				dev->agp->agp_info.aper_size *
277
				1024 * 1024);
272
				1024 * 1024);
278
		}
273
		}
279
	}
-
 
280
	return 0;
274
	}
Line 281... Line 275...
281
}
275
}
282
 
276
 
283
static void drm_pci_agp_destroy(struct drm_device *dev)
277
void drm_pci_agp_destroy(struct drm_device *dev)
284
{
278
{
285
	if (drm_core_has_AGP(dev) && dev->agp) {
279
	if (dev->agp) {
286
		arch_phys_wc_del(dev->agp->agp_mtrr);
280
		arch_phys_wc_del(dev->agp->agp_mtrr);
287
		drm_agp_clear(dev);
281
		drm_agp_clear(dev);
288
		drm_agp_destroy(dev->agp);
282
		kfree(dev->agp);
289
		dev->agp = NULL;
283
		dev->agp = NULL;
Line 290... Line 284...
290
	}
284
	}
Line 295... Line 289...
295
	.get_irq = drm_pci_get_irq,
289
	.get_irq = drm_pci_get_irq,
296
	.get_name = drm_pci_get_name,
290
	.get_name = drm_pci_get_name,
297
	.set_busid = drm_pci_set_busid,
291
	.set_busid = drm_pci_set_busid,
298
	.set_unique = drm_pci_set_unique,
292
	.set_unique = drm_pci_set_unique,
299
	.irq_by_busid = drm_pci_irq_by_busid,
293
	.irq_by_busid = drm_pci_irq_by_busid,
300
	.agp_init = drm_pci_agp_init,
-
 
301
	.agp_destroy = drm_pci_agp_destroy,
-
 
302
};
294
};
303
#endif
295
#endif
Line 304... Line 296...
304
 
296
 
305
/**
297
/**