svn commit: r215367 - head/sys/dev/drm

Nathan Whitehorn nwhitehorn at FreeBSD.org
Tue Nov 16 03:43:07 UTC 2010


Author: nwhitehorn
Date: Tue Nov 16 03:43:06 2010
New Revision: 215367
URL: http://svn.freebsd.org/changeset/base/215367

Log:
  Make drm(4) build, if not work reliably, on PowerPC.

Modified:
  head/sys/dev/drm/drmP.h
  head/sys/dev/drm/drm_agpsupport.c
  head/sys/dev/drm/drm_drv.c
  head/sys/dev/drm/drm_memory.c
  head/sys/dev/drm/drm_sysctl.c
  head/sys/dev/drm/radeon_cs.c

Modified: head/sys/dev/drm/drmP.h
==============================================================================
--- head/sys/dev/drm/drmP.h	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/drmP.h	Tue Nov 16 03:43:06 2010	(r215367)
@@ -80,7 +80,9 @@ struct drm_file;
 #include <machine/pmap.h>
 #include <machine/bus.h>
 #include <machine/resource.h>
+#if defined(__i386__) || defined(__amd64__)
 #include <machine/specialreg.h>
+#endif
 #include <machine/sysarch.h>
 #include <sys/endian.h>
 #include <sys/mman.h>
@@ -246,20 +248,20 @@ typedef u_int8_t u8;
 	*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) +		\
 	    (vm_offset_t)(offset))
 #define DRM_READ16(map, offset)						\
-	*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset))
+	le16toh(*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +	\
+	    (vm_offset_t)(offset)))
 #define DRM_READ32(map, offset)						\
-	*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset))
+	le32toh(*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +	\
+	    (vm_offset_t)(offset)))
 #define DRM_WRITE8(map, offset, val)					\
 	*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) +		\
 	    (vm_offset_t)(offset)) = val
 #define DRM_WRITE16(map, offset, val)					\
 	*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset)) = val
+	    (vm_offset_t)(offset)) = htole16(val)
 #define DRM_WRITE32(map, offset, val)					\
 	*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) +		\
-	    (vm_offset_t)(offset)) = val
+	    (vm_offset_t)(offset)) = htole32(val)
 
 #define DRM_VERIFYAREA_READ( uaddr, size )		\
 	(!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ))

Modified: head/sys/dev/drm/drm_agpsupport.c
==============================================================================
--- head/sys/dev/drm/drm_agpsupport.c	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/drm_agpsupport.c	Tue Nov 16 03:43:06 2010	(r215367)
@@ -318,7 +318,7 @@ int drm_agp_bind(struct drm_device *dev,
 	if (!dev->agp || !dev->agp->acquired)
 		return EINVAL;
 
-	DRM_DEBUG("agp_bind, page_size=%x\n", PAGE_SIZE);
+	DRM_DEBUG("agp_bind, page_size=%x\n", (int)PAGE_SIZE);
 
 	entry = drm_agp_lookup_entry(dev, (void *)request->handle);
 	if (entry == NULL || entry->bound)

Modified: head/sys/dev/drm/drm_drv.c
==============================================================================
--- head/sys/dev/drm/drm_drv.c	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/drm_drv.c	Tue Nov 16 03:43:06 2010	(r215367)
@@ -478,7 +478,7 @@ static int drm_load(struct drm_device *d
 			retcode = ENOMEM;
 			goto error;
 		}
-		if (dev->agp != NULL) {
+		if (dev->agp != NULL && dev->agp->info.ai_aperture_base != 0) {
 			if (drm_mtrr_add(dev->agp->info.ai_aperture_base,
 			    dev->agp->info.ai_aperture_size, DRM_MTRR_WC) == 0)
 				dev->agp->mtrr = 1;

Modified: head/sys/dev/drm/drm_memory.c
==============================================================================
--- head/sys/dev/drm/drm_memory.c	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/drm_memory.c	Tue Nov 16 03:43:06 2010	(r215367)
@@ -73,7 +73,7 @@ void drm_mem_uninit(void)
 
 void *drm_ioremap_wc(struct drm_device *dev, drm_local_map_t *map)
 {
-	return pmap_mapdev_attr(map->offset, map->size, PAT_WRITE_COMBINING);
+	return pmap_mapdev_attr(map->offset, map->size, VM_MEMATTR_WRITE_COMBINING);
 }
 
 void *drm_ioremap(struct drm_device *dev, drm_local_map_t *map)

Modified: head/sys/dev/drm/drm_sysctl.c
==============================================================================
--- head/sys/dev/drm/drm_sysctl.c	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/drm_sysctl.c	Tue Nov 16 03:43:06 2010	(r215367)
@@ -259,7 +259,7 @@ static int drm_bufs_info DRM_SYSCTL_HAND
 				       *(1 << dma->bufs[i].page_order),
 				       (dma->bufs[i].seg_count
 					* (1 << dma->bufs[i].page_order))
-				       * PAGE_SIZE / 1024);
+				       * (int)PAGE_SIZE / 1024);
 	}
 	DRM_SYSCTL_PRINT("\n");
 	for (i = 0; i < dma->buf_count; i++) {

Modified: head/sys/dev/drm/radeon_cs.c
==============================================================================
--- head/sys/dev/drm/radeon_cs.c	Tue Nov 16 03:20:57 2010	(r215366)
+++ head/sys/dev/drm/radeon_cs.c	Tue Nov 16 03:43:06 2010	(r215367)
@@ -765,7 +765,7 @@ static int r600_cs_parse(struct drm_rade
 	memcpy(parser->ib, ib_chunk->kdata, ib_chunk->length_dw * sizeof(uint32_t));
 
 	/* read back last byte to flush WC buffers */
-	rb = readl(((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
+	rb = *(volatile u_int32_t *) (((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
 
 	return 0;
 }


More information about the svn-src-all mailing list