Staging: vme: Renaming following split of GE Fanuc joint venture
[pandora-kernel.git] / drivers / staging / vme / bridges / vme_ca91cx42.c
index 1cf3e91..272cc26 100644 (file)
@@ -1,8 +1,8 @@
 /*
  * Support for the Tundra Universe I/II VME-PCI Bridge Chips
  *
- * Author: Martyn Welch <martyn.welch@gefanuc.com>
- * Copyright 2008 GE Fanuc Intelligent Platforms Embedded Systems, Inc.
+ * Author: Martyn Welch <martyn.welch@ge.com>
+ * Copyright 2008 GE Intelligent Platforms Embedded Systems, Inc.
  *
  * Based on work by Tom Armistead and Ajit Prem
  * Copyright 2004 Motorola Inc.
@@ -38,25 +38,30 @@ static int ca91cx42_probe(struct pci_dev *, const struct pci_device_id *);
 static void ca91cx42_remove(struct pci_dev *);
 static void __exit ca91cx42_exit(void);
 
-struct vme_bridge *ca91cx42_bridge;
-wait_queue_head_t dma_queue;
-wait_queue_head_t iack_queue;
-wait_queue_head_t lm_queue;
-wait_queue_head_t mbox_queue;
+/* Module parameters */
+static int geoid;
 
-void (*lm_callback[4])(int);    /* Called in interrupt handler, be careful! */
-void *crcsr_kernel;
-dma_addr_t crcsr_bus;
+static struct vme_bridge *ca91cx42_bridge;
+static wait_queue_head_t dma_queue;
+static wait_queue_head_t iack_queue;
+#if 0
+static wait_queue_head_t lm_queue;
+#endif
+static wait_queue_head_t mbox_queue;
+
+static void (*lm_callback[4])(int);    /* Called in interrupt handler */
+static void *crcsr_kernel;
+static dma_addr_t crcsr_bus;
 
-struct mutex vme_rmw;   /* Only one RMW cycle at a time */
-struct mutex vme_int;   /*
-                        * Only one VME interrupt can be
-                        * generated at a time, provide locking
-                        */
+static struct mutex vme_rmw;   /* Only one RMW cycle at a time */
+static struct mutex vme_int;   /*
+                                * Only one VME interrupt can be
+                                * generated at a time, provide locking
+                                */
 
 static char driver_name[] = "vme_ca91cx42";
 
-static struct pci_device_id ca91cx42_ids[] = {
+static const struct pci_device_id ca91cx42_ids[] = {
        { PCI_DEVICE(PCI_VENDOR_ID_TUNDRA, PCI_DEVICE_ID_TUNDRA_CA91C142) },
        { },
 };
@@ -881,8 +886,12 @@ int ca91cx42_slot_get(void)
 {
        u32 slot = 0;
 
-       slot = ioread32(ca91cx42_bridge->base + VCSR_BS);
-       slot = ((slot & CA91CX42_VCSR_BS_SLOT_M) >> 27);
+       if (!geoid) {
+               slot = ioread32(ca91cx42_bridge->base + VCSR_BS);
+               slot = ((slot & CA91CX42_VCSR_BS_SLOT_M) >> 27);
+       } else
+               slot = geoid;
+
        return (int)slot;
 
 }
@@ -1299,6 +1308,9 @@ static void __exit ca91cx42_exit(void)
        pci_unregister_driver(&ca91cx42_driver);
 }
 
+MODULE_PARM_DESC(geoid, "Override geographical addressing");
+module_param(geoid, int, 0);
+
 MODULE_DESCRIPTION("VME driver for the Tundra Universe II VME bridge");
 MODULE_LICENSE("GPL");