Home
last modified time | relevance | path

Searched full:fdma (Results 1 – 25 of 41) sorted by relevance

12

/linux/drivers/net/ethernet/microchip/fdma/
H A Dfdma_api.c10 static int __fdma_db_add(struct fdma *fdma, int dcb_idx, int db_idx, u64 status, in __fdma_db_add() argument
11 int (*cb)(struct fdma *fdma, int dcb_idx, in __fdma_db_add() argument
14 struct fdma_db *db = fdma_db_get(fdma, dcb_idx, db_idx); in __fdma_db_add()
18 return cb(fdma, dcb_idx, db_idx, &db->dataptr); in __fdma_db_add()
22 int fdma_db_add(struct fdma *fdma, int dcb_idx, int db_idx, u64 status) in fdma_db_add() argument
24 return __fdma_db_add(fdma, in fdma_db_add()
28 fdma->ops.dataptr_cb); in fdma_db_add()
32 int __fdma_dcb_add(struct fdma *fdma, int dcb_idx, u64 info, u64 status, in __fdma_dcb_add() argument
33 int (*dcb_cb)(struct fdma *fdma, int dcb_idx, u64 *nextptr), in __fdma_dcb_add() argument
34 int (*db_cb)(struct fdma *fdma, int dcb_idx, int db_idx, in __fdma_dcb_add() argument
[all …]
H A Dfdma_api.h64 struct fdma;
79 int (*dataptr_cb)(struct fdma *fdma, int dcb_idx, int db_idx, u64 *ptr);
81 int (*nextptr_cb)(struct fdma *fdma, int dcb_idx, u64 *ptr);
84 struct fdma { struct
108 /* Channel id this FDMA object operates on */
115 static inline void fdma_dcb_advance(struct fdma *fdma) in fdma_dcb_advance() argument
117 fdma->dcb_index++; in fdma_dcb_advance()
118 if (fdma->dcb_index >= fdma->n_dcbs) in fdma_dcb_advance()
119 fdma->dcb_index = 0; in fdma_dcb_advance()
123 static inline void fdma_db_advance(struct fdma *fdma) in fdma_db_advance() argument
[all …]
H A DKconfig3 # Microchip FDMA API configuration
8 config FDMA config
9 bool "FDMA API" if COMPILE_TEST
11 Provides the basic FDMA functionality for multiple Microchip
14 Say Y here if you want to build the FDMA API that provides a common
H A DMakefile3 # Makefile for Microchip FDMA
6 obj-$(CONFIG_FDMA) += fdma.o
7 fdma-y += fdma_api.o
/linux/drivers/net/ethernet/microchip/sparx5/lan969x/
H A Dlan969x_fdma.c15 #define FDMA_PRIV(fdma) ((struct sparx5 *)((fdma)->priv)) argument
17 static int lan969x_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db, in lan969x_fdma_tx_dataptr_cb() argument
20 *dataptr = FDMA_PRIV(fdma)->tx.dbs[dcb].dma_addr; in lan969x_fdma_tx_dataptr_cb()
25 static int lan969x_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db, in lan969x_fdma_rx_dataptr_cb() argument
28 struct sparx5_rx *rx = &FDMA_PRIV(fdma)->rx; in lan969x_fdma_rx_dataptr_cb()
44 struct fdma *fdma = &tx->fdma; in lan969x_fdma_get_next_dcb() local
46 for (int i = 0; i < fdma->n_dcbs; ++i) in lan969x_fdma_get_next_dcb()
47 if (!tx->dbs[i].used && !fdma_is_last(fdma, &fdma->dcbs[i])) in lan969x_fdma_get_next_dcb()
55 struct fdma *fdma = &sparx5->tx.fdma; in lan969x_fdma_tx_clear_buf() local
62 for (i = 0; i < fdma->n_dcbs; ++i) { in lan969x_fdma_tx_clear_buf()
[all …]
/linux/drivers/net/ethernet/microchip/lan966x/
H A Dlan966x_fdma.c9 static int lan966x_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db, in lan966x_fdma_rx_dataptr_cb() argument
12 struct lan966x *lan966x = (struct lan966x *)fdma->priv; in lan966x_fdma_rx_dataptr_cb()
26 static int lan966x_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db, in lan966x_fdma_tx_dataptr_cb() argument
29 struct lan966x *lan966x = (struct lan966x *)fdma->priv; in lan966x_fdma_tx_dataptr_cb()
36 static int lan966x_fdma_xdp_tx_dataptr_cb(struct fdma *fdma, int dcb, int db, in lan966x_fdma_xdp_tx_dataptr_cb() argument
39 struct lan966x *lan966x = (struct lan966x *)fdma->priv; in lan966x_fdma_xdp_tx_dataptr_cb()
53 struct fdma *fdma = &rx->fdma; in lan966x_fdma_rx_free_pages() local
56 for (i = 0; i < fdma->n_dcbs; ++i) { in lan966x_fdma_rx_free_pages()
57 for (j = 0; j < fdma->n_dbs; ++j) in lan966x_fdma_rx_free_pages()
65 struct fdma *fdma = &rx->fdma; in lan966x_fdma_rx_free_page() local
[all …]
H A Dlan966x_regs.h940 /* FDMA:FDMA:FDMA_CH_ACTIVATE */
949 /* FDMA:FDMA:FDMA_CH_RELOAD */
958 /* FDMA:FDMA:FDMA_CH_DISABLE */
967 /* FDMA:FDMA:FDMA_CH_DB_DISCARD */
976 /* FDMA:FDMA:FDMA_DCB_LLP */
979 /* FDMA:FDMA:FDMA_DCB_LLP1 */
982 /* FDMA:FDMA:FDMA_CH_ACTIVE */
985 /* FDMA:FDMA:FDMA_CH_CFG */
1012 /* FDMA:FDMA:FDMA_PORT_CTRL */
1027 /* FDMA:FDMA:FDMA_INTR_DB */
[all …]
H A Dlan966x_main.h133 /* FDMA return action codes for checking if the frame is valid
201 struct fdma fdma; member
237 struct fdma fdma; member
327 /* fdma */
328 bool fdma; member
H A Dlan966x_main.c393 if (port->lan966x->fdma) in lan966x_port_xmit()
413 if (!lan966x->fdma) in lan966x_port_change_mtu()
759 if (lan966x->fdma && lan966x->fdma_ndev == port->dev) in lan966x_cleanup_ports()
782 if (lan966x->fdma) in lan966x_cleanup_ports()
868 if (lan966x->fdma) in lan966x_probe_port()
931 lan_wr(QS_XTR_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) | in lan966x_init()
936 lan_wr(QS_INJ_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) | in lan966x_init()
1156 lan966x->fdma_irq = platform_get_irq_byname(pdev, "fdma"); in lan966x_probe()
1160 "fdma irq", lan966x); in lan966x_probe()
1162 return dev_err_probe(&pdev->dev, err, "Unable to use fdma irq"); in lan966x_probe()
[all …]
H A Dlan966x_xdp.c17 if (!lan966x->fdma) { in lan966x_xdp_setup()
19 "Allow to set xdp only when using fdma"); in lan966x_xdp_setup()
H A DKconfig11 select FDMA
H A DMakefile23 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
/linux/drivers/net/ethernet/mscc/
H A Docelot_fdma.c3 * Microsemi SoCs FDMA driver
24 regmap_write(ocelot->targets[FDMA], reg, data); in ocelot_fdma_writel()
31 regmap_read(ocelot->targets[FDMA], reg, &retval); in ocelot_fdma_readl()
56 static int ocelot_fdma_rx_ring_free(struct ocelot_fdma *fdma) in ocelot_fdma_rx_ring_free() argument
58 struct ocelot_fdma_rx_ring *rx_ring = &fdma->rx_ring; in ocelot_fdma_rx_ring_free()
67 static int ocelot_fdma_tx_ring_free(struct ocelot_fdma *fdma) in ocelot_fdma_tx_ring_free() argument
69 struct ocelot_fdma_tx_ring *tx_ring = &fdma->tx_ring; in ocelot_fdma_tx_ring_free()
78 static bool ocelot_fdma_tx_ring_empty(struct ocelot_fdma *fdma) in ocelot_fdma_tx_ring_empty() argument
80 struct ocelot_fdma_tx_ring *tx_ring = &fdma->tx_ring; in ocelot_fdma_tx_ring_empty()
148 struct ocelot_fdma *fdma = ocelot->fdma; in ocelot_fdma_alloc_rx_buffs() local
[all …]
H A Docelot_fdma.h3 * Microsemi SoCs FDMA driver
135 * struct ocelot_fdma - FDMA context
137 * @irq: FDMA interrupt
160 int ocelot_fdma_inject_frame(struct ocelot *fdma, int port, u32 rew_op,
/linux/Documentation/devicetree/bindings/dma/
H A Dst_fdma.txt3 The FDMA is a general-purpose direct memory access controller capable of
5 The FDMA is based on a Slim processor which requires a firmware.
7 * FDMA Controller
11 - st,stih407-fdma-mpe31-11, "st,slim-rproc";
12 - st,stih407-fdma-mpe31-12, "st,slim-rproc";
13 - st,stih407-fdma-mpe31-13, "st,slim-rproc";
26 compatible = "st,stih407-fdma-mpe31-11", "st,slim-rproc";
48 1. A phandle pointing to the FDMA controller
50 3. A 32bit mask specifying (see include/linux/platform_data/dma-st-fdma.h)
/linux/Documentation/devicetree/bindings/net/
H A Dmscc,vsc7514-switch.yaml18 packets using CPU. Additionally, PTP is supported as well as FDMA for faster
78 - description: fdma target
103 - const: fdma
117 - const: fdma
156 "ana", "s0", "s1", "s2", "fdma";
158 interrupt-names = "ptp_rdy", "xtr", "fdma";
/linux/arch/arm/mach-rpc/
H A Ddma.c267 struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma); in floppy_enable_dma() local
272 if (fdma->dma.sg) in floppy_enable_dma()
275 if (fdma->dma.dma_mode == DMA_MODE_READ) { in floppy_enable_dma()
285 regs.ARM_r9 = fdma->dma.count; in floppy_enable_dma()
286 regs.ARM_r10 = (unsigned long)fdma->dma.addr; in floppy_enable_dma()
296 enable_fiq(fdma->fiq); in floppy_enable_dma()
301 struct floppy_dma *fdma = container_of(dma, struct floppy_dma, dma); in floppy_disable_dma() local
302 disable_fiq(fdma->fiq); in floppy_disable_dma()
/linux/drivers/dma/
H A Dst_fdma.c3 * DMA driver for STMicroelectronics STi FDMA controller
41 * dreq_mask is shared for n channels of fdma, so all accesses must be in st_fdma_dreq_get()
703 { .compatible = "st,stih407-fdma-mpe31-11"
705 { .compatible = "st,stih407-fdma-mpe31-12"
707 { .compatible = "st,stih407-fdma-mpe31-13"
786 /* Initialise list of FDMA channels */ in st_fdma_probe()
796 /* Initialise the FDMA dreq (reserve 0 & 31 for FDMA use) */ in st_fdma_probe()
835 dev_info(&pdev->dev, "ST FDMA engine driver, irq:%d\n", fdev->irq); in st_fdma_probe()
866 MODULE_DESCRIPTION("STMicroelectronics FDMA engine driver");
H A Dst_fdma.h3 * DMA driver header for STMicroelectronics STi FDMA controller
20 #define DRIVER_NAME "st-fdma"
36 * struct st_fdma_hw_node - Node structure used by fdma hw
/linux/drivers/net/ethernet/microchip/
H A DMakefile16 obj-$(CONFIG_FDMA) += fdma/
/linux/drivers/net/ethernet/microchip/sparx5/
H A DKconfig13 select FDMA
H A DMakefile29 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
H A Dsparx5_main_regs.h4663 /* FDMA:FDMA:FDMA_CH_ACTIVATE */
4674 /* FDMA:FDMA:FDMA_CH_RELOAD */
4685 /* FDMA:FDMA:FDMA_CH_DISABLE */
4696 /* FDMA:FDMA:FDMA_DCB_LLP */
4701 /* FDMA:FDMA:FDMA_DCB_LLP1 */
4706 /* FDMA:FDMA:FDMA_DCB_LLP_PREV */
4711 /* FDMA:FDMA:FDMA_DCB_LLP_PREV1 */
4716 /* FDMA:FDMA:FDMA_CH_CFG */
4755 /* FDMA:FDMA:FDMA_CH_TRANSLATE */
4766 /* FDMA:FDMA:FDMA_XTR_CFG */
[all …]
/linux/arch/arm/boot/dts/st/
H A Dstih407-family.dtsi848 /* fdma audio */
850 compatible = "st,stih407-fdma-mpe31-11", "st,slim-rproc";
865 /* fdma app */
867 compatible = "st,stih407-fdma-mpe31-12", "st,slim-rproc";
885 /* fdma free running */
887 compatible = "st,stih407-fdma-mpe31-13", "st,slim-rproc";
/linux/arch/mips/boot/dts/mscc/
H A Docelot.dtsi144 "ana", "s0", "s1", "s2", "fdma";
146 interrupt-names = "ptp_rdy", "xtr", "inj", "fdma";

12