]> err.no Git - linux-2.6/commitdiff
drm: realign sosme radeon code with drm git tree
authorDave Airlie <airlied@linux.ie>
Sat, 19 Aug 2006 07:43:52 +0000 (17:43 +1000)
committerDave Airlie <airlied@linux.ie>
Thu, 21 Sep 2006 19:32:33 +0000 (05:32 +1000)
this applies some minor cleanups for the radeon driver, to use the
3D flush and reset the AGP flags on X recycle

Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/char/drm/radeon_cp.c
drivers/char/drm/radeon_drv.h

index 45f8044e9a302cee1cfbaf8379d594c3ea1d649f..2b5efa306ad7b220721e1ae4881cedf71e24b9aa 100644 (file)
@@ -1340,17 +1340,19 @@ static int radeon_do_init_cp(drm_device_t * dev, drm_radeon_init_t * init)
        DRM_DEBUG("\n");
 
        /* if we require new memory map but we don't have it fail */
-       if ((dev_priv->flags & CHIP_NEW_MEMMAP) && !dev_priv->new_memmap)
-       {
-               DRM_ERROR("Cannot initialise DRM on this card\nThis card requires a new X.org DDX\n");
+       if ((dev_priv->flags & CHIP_NEW_MEMMAP) && !dev_priv->new_memmap) {
+               DRM_ERROR("Cannot initialise DRM on this card\nThis card requires a new X.org DDX for 3D\n");
                radeon_do_cleanup_cp(dev);
                return DRM_ERR(EINVAL);
        }
 
-       if (init->is_pci && (dev_priv->flags & CHIP_IS_AGP))
-       {
+       if (init->is_pci && (dev_priv->flags & CHIP_IS_AGP)) {
                DRM_DEBUG("Forcing AGP card to PCI mode\n");
                dev_priv->flags &= ~CHIP_IS_AGP;
+       } else if (!(dev_priv->flags & (CHIP_IS_AGP | CHIP_IS_PCI | CHIP_IS_PCIE))
+                  && !init->is_pci) {
+               DRM_DEBUG("Restoring AGP flag\n");
+               dev_priv->flags |= CHIP_IS_AGP;
        }
 
        if ((!(dev_priv->flags & CHIP_IS_AGP)) && !dev->sg) {
@@ -2189,7 +2191,9 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
        case CHIP_RV200:
        case CHIP_R200:
        case CHIP_R300:
+       case CHIP_R350:
        case CHIP_R420:
+       case CHIP_RV410:
                dev_priv->flags |= CHIP_HAS_HIERZ;
                break;
        default:
@@ -2199,9 +2203,10 @@ int radeon_driver_load(struct drm_device *dev, unsigned long flags)
 
        if (drm_device_is_agp(dev))
                dev_priv->flags |= CHIP_IS_AGP;
-
-       if (drm_device_is_pcie(dev))
+       else if (drm_device_is_pcie(dev))
                dev_priv->flags |= CHIP_IS_PCIE;
+       else
+               dev_priv->flags |= CHIP_IS_PCI;
 
        DRM_DEBUG("%s card detected\n",
                  ((dev_priv->flags & CHIP_IS_AGP) ? "AGP" : (((dev_priv->flags & CHIP_IS_PCIE) ? "PCIE" : "PCI"))));
index 2f51d51477300c63f5c12dba30d42f518a60a38f..40f1dde6b1bba465d9ab88d117adf99e55bf4a5b 100644 (file)
@@ -142,6 +142,7 @@ enum radeon_chip_flags {
        CHIP_HAS_HIERZ = 0x00100000UL,
        CHIP_IS_PCIE = 0x00200000UL,
        CHIP_NEW_MEMMAP = 0x00400000UL,
+       CHIP_IS_PCI = 0x00800000UL,
 };
 
 #define GET_RING_HEAD(dev_priv)        (dev_priv->writeback_works ? \
@@ -993,12 +994,12 @@ do {                                                                      \
 
 #define RADEON_FLUSH_CACHE() do {                                      \
        OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) );      \
-       OUT_RING( RADEON_RB2D_DC_FLUSH );                               \
+       OUT_RING( RADEON_RB3D_DC_FLUSH );                               \
 } while (0)
 
 #define RADEON_PURGE_CACHE() do {                                      \
        OUT_RING( CP_PACKET0( RADEON_RB3D_DSTCACHE_CTLSTAT, 0 ) );      \
-       OUT_RING( RADEON_RB2D_DC_FLUSH_ALL );                           \
+       OUT_RING( RADEON_RB3D_DC_FLUSH_ALL );                           \
 } while (0)
 
 #define RADEON_FLUSH_ZCACHE() do {                                     \