Lines Matching full:ipi

3  * Xilinx Inter Processor Interrupt(IPI) Mailbox Driver
15 #include <linux/mailbox/zynqmp-ipi-message.h>
21 /* IPI agent ID any */
24 /* indicate if ZynqMP IPI mailbox driver uses SMC calls or HVC calls */
28 /* Default IPI SMC function IDs */
37 /* IPI SMC Macros */
47 /* IPI mailbox status */
52 #define IPI_MB_CHNL_TX 0 /* IPI mailbox TX channel */
53 #define IPI_MB_CHNL_RX 1 /* IPI mailbox RX channel */
56 * struct zynqmp_ipi_mchan - Description of a Xilinx ZynqMP IPI mailbox channel
57 * @is_opened: indicate if the IPI channel is opened
76 * struct zynqmp_ipi_mbox - Description of a ZynqMP IPI mailbox
78 * @pdata: pointer to the IPI private data
80 * IPI mailbox
81 * @remote_id: remote IPI agent ID
84 * @irq: IPI agent interrupt ID
95 * struct zynqmp_ipi_pdata - Description of z ZynqMP IPI agent platform data.
98 * IPI agent
99 * @irq: IPI agent interrupt ID
100 * @method: IPI SMC or HVC is going to be used
101 * @local_id: local IPI agent ID
102 * @num_mboxes: number of mailboxes of this IPI agent
103 * @ipi_mboxes: IPI mailboxes of this IPI agent
116 .name = "zynqmp-ipi-mbox",
135 * zynqmp_ipi_interrupt - Interrupt handler for IPI notification
138 * @data: ZynqMP IPI mailbox platform data.
287 /* Kick IPI mailbox to send message */ in zynqmp_ipi_send_data()
308 * zynqmp_ipi_startup - Startup the IPI channel
327 /* If no channel has been opened, open the IPI mailbox */ in zynqmp_ipi_startup()
335 dev_err(dev, "SMC to open the IPI channel failed.\n"); in zynqmp_ipi_startup()
341 /* If it is RX channel, enable the IPI notification interrupt */ in zynqmp_ipi_startup()
352 * zynqmp_ipi_shutdown - Shutdown the IPI channel
374 /* Release IPI mailbox if no other channel is opened */ in zynqmp_ipi_shutdown()
384 /* ZynqMP IPI mailbox operations */
394 * zynqmp_ipi_of_xlate - Translate of phandle to IPI mailbox channel
420 { .compatible = "xlnx,zynqmp-ipi-mailbox" },
426 * zynqmp_ipi_mbox_get_buf_res - Get buffer resource from the IPI dev node
428 * @node: IPI mbox device child node
429 * @name: name of the IPI buffer
451 * zynqmp_ipi_mbox_dev_release() - release the existence of a ipi mbox dev
453 * @dev: the ipi mailbox device
464 * zynqmp_ipi_mbox_probe - probe IPI mailbox resource from device node
466 * @ipi_mbox: pointer to IPI mailbox private data structure
467 * @node: IPI mailbox device node
483 /* Initialize dev for IPI mailbox */ in zynqmp_ipi_mbox_probe()
493 dev_err(dev, "Failed to register ipi mbox dev.\n"); in zynqmp_ipi_mbox_probe()
507 dev_err(mdev, "Unable to map IPI buffer I/O memory\n"); in zynqmp_ipi_mbox_probe()
522 dev_err(mdev, "Unable to map IPI buffer I/O memory\n"); in zynqmp_ipi_mbox_probe()
544 dev_err(mdev, "Unable to map IPI buffer I/O memory\n"); in zynqmp_ipi_mbox_probe()
559 dev_err(mdev, "Unable to map IPI buffer I/O memory\n"); in zynqmp_ipi_mbox_probe()
573 /* Get the IPI remote agent ID */ in zynqmp_ipi_mbox_probe()
574 ret = of_property_read_u32(node, "xlnx,ipi-id", &ipi_mbox->remote_id); in zynqmp_ipi_mbox_probe()
576 dev_err(dev, "No IPI remote ID is specified.\n"); in zynqmp_ipi_mbox_probe()
602 "Registered ZynqMP IPI mbox with TX/RX channels.\n"); in zynqmp_ipi_mbox_probe()
607 * zynqmp_ipi_free_mboxes - Free IPI mailboxes devices
609 * @pdata: IPI private data
647 /* Get the IPI local agents ID */ in zynqmp_ipi_probe()
648 ret = of_property_read_u32(np, "xlnx,ipi-id", &pdata->local_id); in zynqmp_ipi_probe()
650 dev_err(dev, "No IPI local ID is specified.\n"); in zynqmp_ipi_probe()
669 /* IPI IRQ */ in zynqmp_ipi_probe()
705 .name = "zynqmp-ipi",
723 MODULE_DESCRIPTION("Xilinx ZynqMP IPI Mailbox driver");