rapidio/tsi721: add messaging mbox selector parameter
Add module parameter to allow load time configuration of available RapidIO messaging mailboxes (MBOX1 - MBOX4). Having a messaging MBOX selector mask allows to define which MBOXes are controlled by the mport device driver and reserve some of them for direct use by other drivers. Link: http://lkml.kernel.org/r/1469125134-16523-7-git-send-email-alexandre.bounine@idt.com Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com> Tested-by: Barry Wood <barry.wood@idt.com> Cc: Matt Porter <mporter@kernel.crashing.org> Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com> Cc: Barry Wood <barry.wood@idt.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
cb782cdd2f
commit
e519685de3
|
@ -46,6 +46,11 @@ fully compatible with RIONET driver (Ethernet over RapidIO messaging services).
|
||||||
0 = 128B, 1 = 256B, 2 = 512B, 3 = 1024B, 4 = 2048B and 5 = 4096B.
|
0 = 128B, 1 = 256B, 2 = 512B, 3 = 1024B, 4 = 2048B and 5 = 4096B.
|
||||||
Default value is '-1' (= keep platform setting).
|
Default value is '-1' (= keep platform setting).
|
||||||
|
|
||||||
|
- 'mbox_sel' - RIO messaging MBOX selection mask. This is a bitmask that defines
|
||||||
|
messaging MBOXes are managed by this device driver. Mask bits 0 - 3
|
||||||
|
correspond to MBOX0 - MBOX3. MBOX is under driver's control if the
|
||||||
|
corresponding bit is set to '1'. Default value is 0x0f (= all).
|
||||||
|
|
||||||
II. Known problems
|
II. Known problems
|
||||||
|
|
||||||
None.
|
None.
|
||||||
|
|
|
@ -46,6 +46,11 @@ static int pcie_mrrs = -1;
|
||||||
module_param(pcie_mrrs, int, S_IRUGO);
|
module_param(pcie_mrrs, int, S_IRUGO);
|
||||||
MODULE_PARM_DESC(pcie_mrrs, "PCIe MRRS override value (0...5)");
|
MODULE_PARM_DESC(pcie_mrrs, "PCIe MRRS override value (0...5)");
|
||||||
|
|
||||||
|
static u8 mbox_sel = 0x0f;
|
||||||
|
module_param(mbox_sel, byte, S_IRUGO);
|
||||||
|
MODULE_PARM_DESC(mbox_sel,
|
||||||
|
"RIO Messaging MBOX Selection Mask (default: 0x0f = all)");
|
||||||
|
|
||||||
static void tsi721_omsg_handler(struct tsi721_device *priv, int ch);
|
static void tsi721_omsg_handler(struct tsi721_device *priv, int ch);
|
||||||
static void tsi721_imsg_handler(struct tsi721_device *priv, int ch);
|
static void tsi721_imsg_handler(struct tsi721_device *priv, int ch);
|
||||||
|
|
||||||
|
@ -1881,6 +1886,11 @@ static int tsi721_open_outb_mbox(struct rio_mport *mport, void *dev_id,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((mbox_sel & (1 << mbox)) == 0) {
|
||||||
|
rc = -ENODEV;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
priv->omsg_ring[mbox].dev_id = dev_id;
|
priv->omsg_ring[mbox].dev_id = dev_id;
|
||||||
priv->omsg_ring[mbox].size = entries;
|
priv->omsg_ring[mbox].size = entries;
|
||||||
priv->omsg_ring[mbox].sts_rdptr = 0;
|
priv->omsg_ring[mbox].sts_rdptr = 0;
|
||||||
|
@ -2165,6 +2175,11 @@ static int tsi721_open_inb_mbox(struct rio_mport *mport, void *dev_id,
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((mbox_sel & (1 << mbox)) == 0) {
|
||||||
|
rc = -ENODEV;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize IB Messaging Ring */
|
/* Initialize IB Messaging Ring */
|
||||||
priv->imsg_ring[mbox].dev_id = dev_id;
|
priv->imsg_ring[mbox].dev_id = dev_id;
|
||||||
priv->imsg_ring[mbox].size = entries;
|
priv->imsg_ring[mbox].size = entries;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user