summaryrefslogtreecommitdiff
path: root/drivers/staging/vme/vme_bridge.h
diff options
context:
space:
mode:
authorManohar Vanga <manohar.vanga@cern.ch>2011-09-26 11:27:16 +0200
committerGreg Kroah-Hartman <gregkh@suse.de>2011-10-17 15:43:13 -0700
commit5d6abf379d73efe390488e8edba972af4e93cb1c (patch)
tree428bff86b71eeec6e24504221574092ab14c1cf1 /drivers/staging/vme/vme_bridge.h
parent8f966dc444b11adff6011a1d1fce424abdd876d8 (diff)
staging: vme: make match() driver specific to improve non-VME64x support
For jumper based boards (non VME64x), there is no mechanism for detecting the card that is plugged into a specific slot. This leads to issues in non-autodiscovery crates/cards when a card is plugged into a slot that is "claimed" by a different driver. In reality, there is no problem, but the driver rejects such a configuration due to its dependence on the concept of slots. This patch makes the concept of slots less critical and pushes the driver match() to individual drivers (similar to what happens in the ISA bus in driver/base/isa.c). This allows drivers to register the number of devices that they expect without any restrictions. Devices in this new model are now formatted as $driver_name-$bus_id.$device_id (as compared to the earlier vme-$bus_id.$slot_number). This model also makes the device model more logical as devices are only registered when they actually exist whereas earlier, a set of devices were being created automatically regardless of them actually being there. Another change introduced in this patch is that devices are now created within the VME driver structure rather than in the VME bridge structure. This way, things don't go haywire if the bridge driver is removed while a driver is using it. Signed-off-by: Manohar Vanga <manohar.vanga@cern.ch> Cc: Martyn Welch <martyn.welch@ge.com> Reviewed-by: Emilio G. Cota <cota@braap.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/staging/vme/vme_bridge.h')
-rw-r--r--drivers/staging/vme/vme_bridge.h5
1 files changed, 1 insertions, 4 deletions
diff --git a/drivers/staging/vme/vme_bridge.h b/drivers/staging/vme/vme_bridge.h
index 6dd2f4cf8b68..c2deda2c38df 100644
--- a/drivers/staging/vme/vme_bridge.h
+++ b/drivers/staging/vme/vme_bridge.h
@@ -2,7 +2,6 @@
#define _VME_BRIDGE_H_
#define VME_CRCSR_BUF_SIZE (508*1024)
-#define VME_SLOTS_MAX 32
/*
* Resource structures
*/
@@ -108,15 +107,13 @@ struct vme_bridge {
struct list_head lm_resources;
struct list_head vme_errors; /* List for errors generated on VME */
+ struct list_head devices; /* List of devices on this bridge */
/* Bridge Info - XXX Move to private structure? */
struct device *parent; /* Parent device (eg. pdev->dev for PCI) */
void *driver_priv; /* Private pointer for the bridge driver */
struct list_head bus_list; /* list of VME buses */
- struct vme_dev *dev[VME_SLOTS_MAX]; /* Device registered
- * on VME bus */
-
/* Interrupt callbacks */
struct vme_irq irq[7];
/* Locking for VME irq callback configuration */