Home
last modified time | relevance | path

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

12

/linux-6.12.1/drivers/net/ethernet/microchip/fdma/
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 …]
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 …]
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
DMakefile3 # Makefile for Microchip FDMA
6 obj-$(CONFIG_FDMA) += fdma.o
7 fdma-y += fdma_api.o
/linux-6.12.1/drivers/net/ethernet/microchip/sparx5/
Dsparx5_fdma.c27 static int sparx5_fdma_tx_dataptr_cb(struct fdma *fdma, int dcb, int db, in sparx5_fdma_tx_dataptr_cb() argument
30 *dataptr = fdma->dma + (sizeof(struct fdma_dcb) * fdma->n_dcbs) + in sparx5_fdma_tx_dataptr_cb()
31 ((dcb * fdma->n_dbs + db) * fdma->db_size); in sparx5_fdma_tx_dataptr_cb()
36 static int sparx5_fdma_rx_dataptr_cb(struct fdma *fdma, int dcb, int db, in sparx5_fdma_rx_dataptr_cb() argument
39 struct sparx5 *sparx5 = fdma->priv; in sparx5_fdma_rx_dataptr_cb()
43 skb = __netdev_alloc_skb(rx->ndev, fdma->db_size, GFP_ATOMIC); in sparx5_fdma_rx_dataptr_cb()
56 struct fdma *fdma = &rx->fdma; in sparx5_fdma_rx_activate() local
59 spx5_wr(((u64)fdma->dma) & GENMASK(31, 0), sparx5, in sparx5_fdma_rx_activate()
60 FDMA_DCB_LLP(fdma->channel_id)); in sparx5_fdma_rx_activate()
61 spx5_wr(((u64)fdma->dma) >> 32, sparx5, in sparx5_fdma_rx_activate()
[all …]
DKconfig13 select FDMA
DMakefile21 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
/linux-6.12.1/drivers/net/ethernet/microchip/lan966x/
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 …]
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 …]
Dlan966x_main.h129 /* FDMA return action codes for checking if the frame is valid
197 struct fdma fdma; member
233 struct fdma fdma; member
322 /* fdma */
323 bool fdma; member
Dlan966x_main.c387 if (port->lan966x->fdma) in lan966x_port_xmit()
407 if (!lan966x->fdma) in lan966x_port_change_mtu()
753 if (lan966x->fdma && lan966x->fdma_ndev == port->dev) in lan966x_cleanup_ports()
776 if (lan966x->fdma) in lan966x_cleanup_ports()
863 if (lan966x->fdma) in lan966x_probe_port()
925 lan_wr(QS_XTR_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) | in lan966x_init()
930 lan_wr(QS_INJ_GRP_CFG_MODE_SET(lan966x->fdma ? 2 : 1) | in lan966x_init()
1150 lan966x->fdma_irq = platform_get_irq_byname(pdev, "fdma"); in lan966x_probe()
1154 "fdma irq", lan966x); in lan966x_probe()
1156 return dev_err_probe(&pdev->dev, err, "Unable to use fdma irq"); in lan966x_probe()
[all …]
Dlan966x_xdp.c17 if (!lan966x->fdma) { in lan966x_xdp_setup()
19 "Allow to set xdp only when using fdma"); in lan966x_xdp_setup()
DKconfig11 select FDMA
DMakefile23 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
/linux-6.12.1/drivers/net/ethernet/mscc/
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 …]
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,
Docelot_vsc7514.c258 { FDMA, "fdma", 1 }, in mscc_ocelot_probe()
294 if (ocelot->targets[FDMA]) in mscc_ocelot_probe()
360 if (ocelot->fdma) in mscc_ocelot_probe()
403 if (ocelot->fdma) in mscc_ocelot_remove()
/linux-6.12.1/Documentation/devicetree/bindings/dma/
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-6.12.1/Documentation/devicetree/bindings/net/
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-6.12.1/arch/arm/mach-rpc/
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-6.12.1/drivers/dma/
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");
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-6.12.1/drivers/net/ethernet/microchip/
DMakefile16 obj-$(CONFIG_FDMA) += fdma/
/linux-6.12.1/arch/arm/boot/dts/st/
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-6.12.1/arch/mips/boot/dts/mscc/
Docelot.dtsi144 "ana", "s0", "s1", "s2", "fdma";
146 interrupt-names = "ptp_rdy", "xtr", "inj", "fdma";

12