drm: remove the DRM pci domain
authorDave Airlie <airlied@linux.ie>
Mon, 7 Aug 2006 10:23:42 +0000 (20:23 +1000)
committerDave Airlie <airlied@linux.ie>
Thu, 21 Sep 2006 19:32:30 +0000 (05:32 +1000)
This patch removes the pci_domain from the DRM device structure, and
gets it via a macro that either asks the platform or does the alpha special
case. jgarzik asked for this to just use the platform magic, but I've no
alpha experience and I'd rather not just break it and wait for someone to
give out.

Signed-off-by: Dave Airlie <airlied@linux.ie>
drivers/char/drm/drmP.h
drivers/char/drm/drm_ioctl.c
drivers/char/drm/drm_irq.c
drivers/char/drm/drm_stub.c

index 9838e8ce6ff265111ce541e981e4a295c7014717..4f0de974c191d45a627d8541944c406fc7de9427 100644 (file)
@@ -699,7 +699,6 @@ typedef struct drm_device {
        drm_agp_head_t *agp;    /**< AGP data */
 
        struct pci_dev *pdev;           /**< PCI device structure */
-       int pci_domain;                 /**< PCI bus domain number */
 #ifdef __alpha__
        struct pci_controller *hose;
 #endif
@@ -721,6 +720,12 @@ static __inline__ int drm_core_check_feature(struct drm_device *dev,
        return ((dev->driver->driver_features & feature) ? 1 : 0);
 }
 
+#ifdef __alpha__
+#define drm_get_pci_domain(dev) dev->hose->bus->number
+#else
+#define drm_get_pci_domain(dev) pci_domain_nr(dev->pdev->bus)
+#endif
+
 #if __OS_HAS_AGP
 static inline int drm_core_has_AGP(struct drm_device *dev)
 {
index 9f20c2b5a3661b7bdea0cb4fd4b546dd0e1c174d..e158998305819f1c8d76b336b5d5eb4f6fb3ea18 100644 (file)
@@ -127,7 +127,7 @@ int drm_setunique(struct inode *inode, struct file *filp,
        domain = bus >> 8;
        bus &= 0xff;
 
-       if ((domain != dev->pci_domain) ||
+       if ((domain != drm_get_pci_domain(dev)) ||
            (bus != dev->pdev->bus->number) ||
            (slot != PCI_SLOT(dev->pdev->devfn)) ||
            (func != PCI_FUNC(dev->pdev->devfn)))
@@ -149,7 +149,7 @@ static int drm_set_busid(drm_device_t * dev)
                return ENOMEM;
 
        len = snprintf(dev->unique, dev->unique_len, "pci:%04x:%02x:%02x.%d",
-                      dev->pci_domain, dev->pdev->bus->number,
+                      drm_get_pci_domain(dev), dev->pdev->bus->number,
                       PCI_SLOT(dev->pdev->devfn),
                       PCI_FUNC(dev->pdev->devfn));
 
index 41c7020c93ef84f3fb8116b8c3c6d982d03396c5..4553a3a1e496c463b82b6a93e7cda756aec350a0 100644 (file)
@@ -64,7 +64,7 @@ int drm_irq_by_busid(struct inode *inode, struct file *filp,
        if (copy_from_user(&p, argp, sizeof(p)))
                return -EFAULT;
 
-       if ((p.busnum >> 8) != dev->pci_domain ||
+       if ((p.busnum >> 8) != drm_get_pci_domain(dev) ||
            (p.busnum & 0xff) != dev->pdev->bus->number ||
            p.devnum != PCI_SLOT(dev->pdev->devfn) || p.funcnum != PCI_FUNC(dev->pdev->devfn))
                return -EINVAL;
index 96449d538e15b00313309daf342c2541056d0982..b1ead37c51d6295c30bdb887520ad5d998c18e28 100644 (file)
@@ -68,9 +68,6 @@ static int drm_fill_in_dev(drm_device_t * dev, struct pci_dev *pdev,
 
 #ifdef __alpha__
        dev->hose = pdev->sysdata;
-       dev->pci_domain = dev->hose->bus->number;
-#else
-       dev->pci_domain = 0;
 #endif
        dev->irq = pdev->irq;