Lines Matching full:pdc

7  * Broadcom PDC Mailbox Driver
8 * The PDC provides a ring based programming interface to one or more hardware
9 * offload engines. For example, the PDC driver works with both SPU-M and SPU2
10 * cryptographic offload hardware. In some chips the PDC is referred to as MDE,
11 * and in others the FA2/FA+ hardware is used with this PDC driver.
13 * The PDC driver registers with the Linux mailbox framework as a mailbox
14 * controller, once for each PDC instance. Ring 0 for each PDC is registered as
15 * a mailbox channel. The PDC driver uses interrupts to determine when data
16 * transfers to and from an offload engine are complete. The PDC driver uses
20 * The PDC driver allows multiple messages to be pending in the descriptor
24 * an rx interrupt indicates a response is ready, the PDC driver processes numd
52 /* # entries in PDC dma ring */
83 * PDC driver reserves ringset 0 on each SPU for its own use. The driver does
84 * not currently support use of multiple ringsets on a single PDC engine.
158 PDC_HW /* PDC/MDE hardware (i.e. Northstar 2, Pegasus) */
198 /* PDC registers */
210 u32 intrcvlazy_0; /* 0x030 (Only in PDC, not FA2) */
211 u32 intrcvlazy_1; /* 0x034 (Only in PDC, not FA2) */
212 u32 intrcvlazy_2; /* 0x038 (Only in PDC, not FA2) */
213 u32 intrcvlazy_3; /* 0x03c (Only in PDC, not FA2) */
216 u32 fa_intrecvlazy; /* 0x100 (Only in FA2, not PDC) */
242 u32 hw_war; /* 0x1e4 (Only in PDC, not FA2) */
280 /* PDC state structure */
282 /* Index of the PDC whose state is in this structure instance */
285 /* Platform device for this PDC instance */
289 * Each PDC instance has a mailbox controller. PDC receives request
323 struct pdc_regs *regs; /* start of PDC registers */
408 /* hardware type - FA2 or PDC/MDE */
421 /* top level debug FS directory for PDC driver */
442 "PDC requests....................%u\n", in pdc_debugfs_read()
445 "PDC responses...................%u\n", in pdc_debugfs_read()
488 * @pdcs: PDC state structure
497 snprintf(spu_stats_name, 16, "pdc%d_stats", pdcs->pdc_idx); in pdc_setup_debugfs()
514 * @pdcs: PDC state for SPU that will generate result
527 "Writing rx descriptor for PDC %u at index %u with length %u. flags %#x\n", in pdc_build_rxd()
542 * @pdcs: PDC state for the SPU that will process this request
555 "Writing tx descriptor for PDC %u at index %u with length %u, flags %#x\n", in pdc_build_txd()
569 * @pdcs: PDC state for the SPU to receive from
616 dev_dbg(dev, "PDC %u reclaimed %d tx descriptors", in pdc_receive_one()
632 dev_dbg(dev, "PDC %u reclaimed %d rx descriptors", in pdc_receive_one()
636 "PDC %u txin %u, txout %u, rxin %u, rxout %u, last_rx_curr %u\n", in pdc_receive_one()
670 * @pdcs: PDC state
746 * If sg buffer larger than PDC limit, split across in pdc_tx_list_sg_add()
779 * @pdcs: PDC state for SPU to process the request
800 * pdc_rx_list_init() - Start a new receive descriptor list for a given PDC.
801 * @pdcs: PDC state for SPU handling request
904 * If sg buffer larger than PDC limit, split across in pdc_rx_list_sg_add()
963 * @data: PDC state structure
978 * @pdcs: PDC instance state
1118 * @pdcs: PDC state
1155 * Return: true if PDC can accept another message on this channel
1269 "Shutdown mailbox channel for PDC %u", pdcs->pdc_idx); in pdc_shutdown()
1276 * @pdcs: state of the PDC
1289 dev_dbg(dev, "PDC %u initial values:", pdcs->pdc_idx); in pdc_hw_init()
1329 * @pdcs: PDC state structure
1345 * @pdcs: PDC state structure
1347 * The metadata is not returned to the mailbox client. So the PDC driver
1365 pdcs->rx_buf_pool = dma_pool_create("pdc rx bufs", dev, in pdc_rx_buf_pool_create()
1375 * pdc_interrupts_init() - Initialize the interrupt configuration for a PDC and
1378 * @pdcs: PDC state
1405 dev_dbg(dev, "pdc device %s irq %u for pdcs %p", in pdc_interrupts_init()
1427 * @pdcs: PDC state
1429 * Each PDC is a mailbox controller. Each ringset is a mailbox channel. Kernel
1430 * driver only uses one ringset and thus one mb channel. PDC uses the transmit
1463 "Failed to register PDC mailbox controller. Error %d.", in pdc_mb_init()
1475 {.compatible = "brcm,iproc-pdc-mbox", .data = &pdc_hw},
1484 * @pdcs: PDC state
1522 * pdc_probe() - Probe function for PDC driver.
1523 * @pdev: PDC platform device
1527 * Initialize a mailbox controller for each PDC.
1539 /* PDC state for one SPU */ in pdc_probe()
1553 dev_warn(dev, "PDC device cannot perform DMA. Error %d.", err); in pdc_probe()
1558 pdcs->ring_pool = dma_pool_create("pdc rings", dev, PDC_RING_SIZE, in pdc_probe()
1574 dev_dbg(dev, "PDC register region res.start = %pa, res.end = %pa", in pdc_probe()
1637 .name = "brcm-iproc-pdc-mbox",
1644 MODULE_DESCRIPTION("Broadcom PDC mailbox driver");