/linux-6.12.1/drivers/net/ethernet/microchip/fdma/ |
D | fdma_api.c | 10 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 …]
|
D | fdma_api.h | 64 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 …]
|
D | Kconfig | 3 # 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
|
D | Makefile | 3 # 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/ |
D | sparx5_fdma.c | 27 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 …]
|
D | Kconfig | 13 select FDMA
|
D | Makefile | 21 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
/linux-6.12.1/drivers/net/ethernet/microchip/lan966x/ |
D | lan966x_fdma.c | 9 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 …]
|
D | lan966x_regs.h | 940 /* 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 …]
|
D | lan966x_main.h | 129 /* 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
|
D | lan966x_main.c | 387 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 …]
|
D | lan966x_xdp.c | 17 if (!lan966x->fdma) { in lan966x_xdp_setup() 19 "Allow to set xdp only when using fdma"); in lan966x_xdp_setup()
|
D | Kconfig | 11 select FDMA
|
D | Makefile | 23 ccflags-y += -I$(srctree)/drivers/net/ethernet/microchip/fdma
|
/linux-6.12.1/drivers/net/ethernet/mscc/ |
D | ocelot_fdma.c | 3 * 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 …]
|
D | ocelot_fdma.h | 3 * 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,
|
D | ocelot_vsc7514.c | 258 { 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/ |
D | st_fdma.txt | 3 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/ |
D | mscc,vsc7514-switch.yaml | 18 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/ |
D | dma.c | 267 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/ |
D | st_fdma.c | 3 * 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");
|
D | st_fdma.h | 3 * 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/ |
D | Makefile | 16 obj-$(CONFIG_FDMA) += fdma/
|
/linux-6.12.1/arch/arm/boot/dts/st/ |
D | stih407-family.dtsi | 848 /* 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/ |
D | ocelot.dtsi | 144 "ana", "s0", "s1", "s2", "fdma"; 146 interrupt-names = "ptp_rdy", "xtr", "inj", "fdma";
|