radeon_cp.c (194969) | radeon_cp.c (196470) |
---|---|
1/*- 2 * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. 3 * Copyright 2000 VA Linux Systems, Inc., Fremont, California. 4 * Copyright 2007 Advanced Micro Devices, Inc. 5 * All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the "Software"), --- 15 unchanged lines hidden (view full) --- 24 * DEALINGS IN THE SOFTWARE. 25 * 26 * Authors: 27 * Kevin E. Martin <martin@valinux.com> 28 * Gareth Hughes <gareth@valinux.com> 29 */ 30 31#include <sys/cdefs.h> | 1/*- 2 * Copyright 2000 Precision Insight, Inc., Cedar Park, Texas. 3 * Copyright 2000 VA Linux Systems, Inc., Fremont, California. 4 * Copyright 2007 Advanced Micro Devices, Inc. 5 * All Rights Reserved. 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a 8 * copy of this software and associated documentation files (the "Software"), --- 15 unchanged lines hidden (view full) --- 24 * DEALINGS IN THE SOFTWARE. 25 * 26 * Authors: 27 * Kevin E. Martin <martin@valinux.com> 28 * Gareth Hughes <gareth@valinux.com> 29 */ 30 31#include <sys/cdefs.h> |
32__FBSDID("$FreeBSD: head/sys/dev/drm/radeon_cp.c 194969 2009-06-25 16:17:07Z rnoland $"); | 32__FBSDID("$FreeBSD: head/sys/dev/drm/radeon_cp.c 196470 2009-08-23 14:55:57Z rnoland $"); |
33 34#include "dev/drm/drmP.h" 35#include "dev/drm/drm.h" 36#include "dev/drm/drm_sarea.h" 37#include "dev/drm/radeon_drm.h" 38#include "dev/drm/radeon_drv.h" 39#include "dev/drm/r300_reg.h" 40 --- 2014 unchanged lines hidden (view full) --- 2055 2056 if (drm_device_is_agp(dev)) 2057 dev_priv->flags |= RADEON_IS_AGP; 2058 else if (drm_device_is_pcie(dev)) 2059 dev_priv->flags |= RADEON_IS_PCIE; 2060 else 2061 dev_priv->flags |= RADEON_IS_PCI; 2062 | 33 34#include "dev/drm/drmP.h" 35#include "dev/drm/drm.h" 36#include "dev/drm/drm_sarea.h" 37#include "dev/drm/radeon_drm.h" 38#include "dev/drm/radeon_drv.h" 39#include "dev/drm/r300_reg.h" 40 --- 2014 unchanged lines hidden (view full) --- 2055 2056 if (drm_device_is_agp(dev)) 2057 dev_priv->flags |= RADEON_IS_AGP; 2058 else if (drm_device_is_pcie(dev)) 2059 dev_priv->flags |= RADEON_IS_PCIE; 2060 else 2061 dev_priv->flags |= RADEON_IS_PCI; 2062 |
2063 mtx_init(&dev_priv->cs.cs_mutex, "cs_mtx", NULL, MTX_DEF); 2064 |
|
2063 ret = drm_addmap(dev, drm_get_resource_start(dev, 2), 2064 drm_get_resource_len(dev, 2), _DRM_REGISTERS, 2065 _DRM_READ_ONLY | _DRM_DRIVER, &dev_priv->mmio); 2066 if (ret != 0) 2067 goto error; 2068 2069 ret = drm_vblank_init(dev, 2); 2070 if (ret != 0) --- 36 unchanged lines hidden (view full) --- 2107int radeon_driver_unload(struct drm_device *dev) 2108{ 2109 drm_radeon_private_t *dev_priv = dev->dev_private; 2110 2111 DRM_DEBUG("\n"); 2112 2113 drm_rmmap(dev, dev_priv->mmio); 2114 | 2065 ret = drm_addmap(dev, drm_get_resource_start(dev, 2), 2066 drm_get_resource_len(dev, 2), _DRM_REGISTERS, 2067 _DRM_READ_ONLY | _DRM_DRIVER, &dev_priv->mmio); 2068 if (ret != 0) 2069 goto error; 2070 2071 ret = drm_vblank_init(dev, 2); 2072 if (ret != 0) --- 36 unchanged lines hidden (view full) --- 2109int radeon_driver_unload(struct drm_device *dev) 2110{ 2111 drm_radeon_private_t *dev_priv = dev->dev_private; 2112 2113 DRM_DEBUG("\n"); 2114 2115 drm_rmmap(dev, dev_priv->mmio); 2116 |
2117 mtx_destroy(&dev_priv->cs.cs_mutex); 2118 |
|
2115 drm_free(dev_priv, sizeof(*dev_priv), DRM_MEM_DRIVER); 2116 2117 dev->dev_private = NULL; 2118 return 0; 2119} 2120 2121void radeon_commit_ring(drm_radeon_private_t *dev_priv) 2122{ 2123 int i; 2124 u32 *ring; 2125 int tail_aligned; 2126 2127 /* check if the ring is padded out to 16-dword alignment */ 2128 | 2119 drm_free(dev_priv, sizeof(*dev_priv), DRM_MEM_DRIVER); 2120 2121 dev->dev_private = NULL; 2122 return 0; 2123} 2124 2125void radeon_commit_ring(drm_radeon_private_t *dev_priv) 2126{ 2127 int i; 2128 u32 *ring; 2129 int tail_aligned; 2130 2131 /* check if the ring is padded out to 16-dword alignment */ 2132 |
2129 tail_aligned = dev_priv->ring.tail & 0xf; | 2133 tail_aligned = dev_priv->ring.tail & (RADEON_RING_ALIGN - 1); |
2130 if (tail_aligned) { | 2134 if (tail_aligned) { |
2131 int num_p2 = 16 - tail_aligned; | 2135 int num_p2 = RADEON_RING_ALIGN - tail_aligned; |
2132 2133 ring = dev_priv->ring.start; 2134 /* pad with some CP_PACKET2 */ 2135 for (i = 0; i < num_p2; i++) 2136 ring[dev_priv->ring.tail + i] = CP_PACKET2(); 2137 2138 dev_priv->ring.tail += i; 2139 --- 18 unchanged lines hidden --- | 2136 2137 ring = dev_priv->ring.start; 2138 /* pad with some CP_PACKET2 */ 2139 for (i = 0; i < num_p2; i++) 2140 ring[dev_priv->ring.tail + i] = CP_PACKET2(); 2141 2142 dev_priv->ring.tail += i; 2143 --- 18 unchanged lines hidden --- |