mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 03:01:39 -04:00
NTB: Add Messaging NTB API
Some IDT NTB-capable PCIe-switches have message registers to communicate with peer devices. This patch adds new NTB API callback methods, which can be used to utilize these registers functionality: ntb_msg_count(); - get number of message registers ntb_msg_inbits(); - get bitfield of inbound message registers status ntb_msg_outbits(); - get bitfield of outbound message registers status ntb_msg_read_sts(); - read the inbound and outbound message registers status ntb_msg_clear_sts(); - clear status bits of message registers ntb_msg_set_mask(); - mask interrupts raised by status bits of message registers. ntb_msg_clear_mask(); - clear interrupts mask bits of message registers ntb_msg_read(midx, *pidx); - read message register with specified index, additionally getting peer port index which data received from ntb_msg_write(midx, pidx); - write data to the specified message register sending it to the passed peer device connected over a pidx port ntb_msg_event(); - notify driver context of a new message event Of course there is hardware which doesn't support Message registers, so this API is made optional. Signed-off-by: Serge Semin <[email protected]> Acked-by: Allen Hubbe <[email protected]> Signed-off-by: Jon Mason <[email protected]>
This commit is contained in:
parent
d67288a395
commit
bc3e49adc2
2 changed files with 218 additions and 0 deletions
|
|
@ -193,6 +193,19 @@ void ntb_db_event(struct ntb_dev *ntb, int vector)
|
|||
}
|
||||
EXPORT_SYMBOL(ntb_db_event);
|
||||
|
||||
void ntb_msg_event(struct ntb_dev *ntb)
|
||||
{
|
||||
unsigned long irqflags;
|
||||
|
||||
spin_lock_irqsave(&ntb->ctx_lock, irqflags);
|
||||
{
|
||||
if (ntb->ctx_ops && ntb->ctx_ops->msg_event)
|
||||
ntb->ctx_ops->msg_event(ntb->ctx);
|
||||
}
|
||||
spin_unlock_irqrestore(&ntb->ctx_lock, irqflags);
|
||||
}
|
||||
EXPORT_SYMBOL(ntb_msg_event);
|
||||
|
||||
int ntb_default_port_number(struct ntb_dev *ntb)
|
||||
{
|
||||
switch (ntb->topo) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue