Staging: vme: Allow override of geographical address on ca91c142

Geographical addressing only works if the VME backplane supports it. There
are a large number of old backplanes which do not support geographical
addressing. These boards will generally report a slot ID of zero - which is
an invalid ID in the slot numbering scheme.

Allow the geographical address to be over-ridden on the ca91c142 so that a
slot ID can be provided manually in these circumstances.

Signed-off-by: Martyn Welch <martyn.welch@gefanuc.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
Martyn Welch 2009-12-15 08:42:56 +00:00 committed by Greg Kroah-Hartman
parent 638f199db4
commit 12b2d5c089
1 changed files with 12 additions and 2 deletions

View File

@ -38,6 +38,9 @@ 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);
/* Module parameters */
static int geoid;
struct vme_bridge *ca91cx42_bridge;
wait_queue_head_t dma_queue;
wait_queue_head_t iack_queue;
@ -881,8 +884,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 +1306,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");