/openbmc/linux/arch/arm/kernel/ |
H A D | dma.c | 3 * linux/arch/arm/kernel/dma.c 7 * Front-end to the DMA handling. This handles the allocation/freeing 8 * of DMA channels, and provides a unified interface to the machines 9 * DMA facilities. 19 #include <asm/dma.h> 21 #include <asm/mach/dma.h> 36 int __init isa_dma_add(unsigned int chan, dma_t *dma) in isa_dma_add() argument 38 if (!dma->d_ops) in isa_dma_add() 41 sg_init_table(&dma->buf, 1); in isa_dma_add() 45 dma_chan[chan] = dma; in isa_dma_add() [all …]
|
/openbmc/linux/drivers/tty/serial/8250/ |
H A D | 8250_dma.c | 3 * 8250_dma.c - DMA Engine API support for 8250.c 10 #include <linux/dma-mapping.h> 17 struct uart_8250_dma *dma = p->dma; in __dma_tx_complete() local 22 dma_sync_single_for_cpu(dma->txchan->device->dev, dma->tx_addr, in __dma_tx_complete() 27 dma->tx_running = 0; in __dma_tx_complete() 29 uart_xmit_advance(&p->port, dma->tx_size); in __dma_tx_complete() 35 if (ret || !dma->tx_running) in __dma_tx_complete() 43 struct uart_8250_dma *dma = p->dma; in __dma_rx_complete() local 50 * New DMA Rx can be started during the completion handler before it in __dma_rx_complete() 54 dma_status = dmaengine_tx_status(dma->rxchan, dma->rx_cookie, &state); in __dma_rx_complete() [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/powerpc/fsl/ |
H A D | dma.txt | 1 * Freescale DMA Controllers 3 ** Freescale Elo DMA Controller 4 This is a little-endian 4-channel DMA controller, used in Freescale mpc83xx 9 - compatible : must include "fsl,elo-dma" 10 - reg : DMA General Status Register, i.e. DGSR which contains 11 status for all the 4 DMA channels 13 DMA channels and the address space of the DMA controller 15 - interrupts : interrupt specifier for DMA IRQ 17 - DMA channel nodes: 18 - compatible : must include "fsl,elo-dma-channel" [all …]
|
/openbmc/linux/drivers/i2c/busses/ |
H A D | i2c-stm32.c | 11 /* Functions for DMA support */ 17 struct stm32_i2c_dma *dma; in stm32_i2c_dma_request() local 21 dma = devm_kzalloc(dev, sizeof(*dma), GFP_KERNEL); in stm32_i2c_dma_request() 22 if (!dma) in stm32_i2c_dma_request() 25 /* Request and configure I2C TX dma channel */ in stm32_i2c_dma_request() 26 dma->chan_tx = dma_request_chan(dev, "tx"); in stm32_i2c_dma_request() 27 if (IS_ERR(dma->chan_tx)) { in stm32_i2c_dma_request() 28 ret = PTR_ERR(dma->chan_tx); in stm32_i2c_dma_request() 31 "can't request DMA tx channel\n"); in stm32_i2c_dma_request() 40 ret = dmaengine_slave_config(dma->chan_tx, &dma_sconfig); in stm32_i2c_dma_request() [all …]
|
/openbmc/u-boot/include/ |
H A D | dma.h | 16 * enum dma_direction - dma transfer direction indicator 37 * @supported: mode of transfers that DMA can support, should be 46 * A DMA is a feature of computer systems that allows certain hardware 48 * DMA channels are typically generated externally to the HW module 49 * consuming them, by an entity this API calls a DMA provider. This API 51 * copy, send and receive data using DMA. 53 * A driver that implements UCLASS_DMA is a DMA provider. A provider will 56 * DMA providers must implement. 58 * DMA consumers/clients are the HW modules driven by the DMA channels. This 61 * DMA consumer DMA_MEM_TO_DEV (transmit) usage example (based on networking). [all …]
|
H A D | dma-uclass.h | 12 /* See dma.h for background documentation. */ 14 #include <dma.h> 19 * struct dma_ops - Driver model DMA operations 21 * The uclass interface is implemented by all DMA devices which use 27 * of_xlate - Translate a client's device-tree (OF) DMA specifier. 29 * The DMA core calls this function as the first step in implementing 32 * If this function pointer is set to NULL, the DMA core will use a 33 * default implementation, which assumes #dma-cells = <1>, and that 34 * the DT cell contains a simple integer DMA Channel. 36 * At present, the DMA API solely supports device-tree. If this [all …]
|
/openbmc/u-boot/drivers/dma/ |
H A D | dma-uclass.c | 15 #include <dma-uclass.h> 26 static int dma_of_xlate_default(struct dma *dma, in dma_of_xlate_default() argument 29 debug("%s(dma=%p)\n", __func__, dma); in dma_of_xlate_default() 37 dma->id = args->args[0]; in dma_of_xlate_default() 39 dma->id = 0; in dma_of_xlate_default() 44 int dma_get_by_index(struct udevice *dev, int index, struct dma *dma) in dma_get_by_index() argument 51 debug("%s(dev=%p, index=%d, dma=%p)\n", __func__, dev, index, dma); in dma_get_by_index() 53 assert(dma); in dma_get_by_index() 54 dma->dev = NULL; in dma_get_by_index() 56 ret = dev_read_phandle_with_args(dev, "dmas", "#dma-cells", 0, index, in dma_get_by_index() [all …]
|
H A D | sandbox-dma-test.c | 13 #include <dma-uclass.h> 47 static int sandbox_dma_of_xlate(struct dma *dma, in sandbox_dma_of_xlate() argument 50 struct sandbox_dma_dev *ud = dev_get_priv(dma->dev); in sandbox_dma_of_xlate() 53 debug("%s(dma id=%u)\n", __func__, args->args[0]); in sandbox_dma_of_xlate() 58 dma->id = args->args[0]; in sandbox_dma_of_xlate() 60 uc = &ud->channels[dma->id]; in sandbox_dma_of_xlate() 62 if (dma->id == 1) in sandbox_dma_of_xlate() 64 else if (dma->id == 2) in sandbox_dma_of_xlate() 68 debug("%s(dma id=%lu dir=%d)\n", __func__, dma->id, uc->dir); in sandbox_dma_of_xlate() 73 static int sandbox_dma_request(struct dma *dma) in sandbox_dma_request() argument [all …]
|
H A D | bcm6348-iudma.c | 5 * Derived from linux/drivers/dma/bcm63xx-iudma.c: 21 #include <dma-uclass.h> 29 /* DMA Channels */ 35 /* DMA Global Configuration register */ 43 /* DMA Global Flow Control registers */ 50 /* DMA Global Reset register */ 55 /* DMA Channel Configuration register */ 64 /* DMA Channel Max Burst Length register */ 67 /* DMA SRAM Descriptor Ring Start register */ 70 /* DMA SRAM State/Bytes done/ring offset register */ [all …]
|
/openbmc/linux/drivers/media/platform/xilinx/ |
H A D | xilinx-dma.c | 3 * Xilinx Video DMA 12 #include <linux/dma/xilinx_dma.h> 23 #include <media/videobuf2-dma-contig.h> 25 #include "xilinx-dma.h" 57 static int xvip_dma_verify_format(struct xvip_dma *dma) in xvip_dma_verify_format() argument 65 subdev = xvip_dma_remote_subdev(&dma->pad, &fmt.pad); in xvip_dma_verify_format() 73 if (dma->fmtinfo->code != fmt.format.code || in xvip_dma_verify_format() 74 dma->format.height != fmt.format.height || in xvip_dma_verify_format() 75 dma->format.width != fmt.format.width || in xvip_dma_verify_format() 76 dma->format.colorspace != fmt.format.colorspace) in xvip_dma_verify_format() [all …]
|
/openbmc/linux/drivers/dma/ |
H A D | Kconfig | 3 # DMA engine configuration 7 bool "DMA Engine support" 10 DMA engines can do asynchronous data transfers without 14 DMA Device drivers supported by the configured arch, it may 18 bool "DMA Engine debugging" 22 say N here. This enables DMA engine core and driver debugging. 25 bool "DMA Engine verbose debugging" 30 the DMA engine core and drivers. 35 comment "DMA Devices" 74 provide DMA engine support. This includes the original ARM [all …]
|
/openbmc/linux/sound/core/ |
H A D | isadma.c | 3 * ISA DMA support functions 9 * ISA DMA controllers. 15 #include <linux/isa-dma.h> 19 * snd_dma_program - program an ISA DMA transfer 20 * @dma: the dma number 22 * @size: the DMA transfer size 23 * @mode: the DMA transfer mode, DMA_MODE_XXX 25 * Programs an ISA DMA transfer for the given buffer. 27 void snd_dma_program(unsigned long dma, in snd_dma_program() argument 34 disable_dma(dma); in snd_dma_program() [all …]
|
/openbmc/linux/drivers/media/v4l2-core/ |
H A D | videobuf-dma-sg.c | 3 * helper functions for SG DMA video4linux capture buffers 26 #include <linux/dma-mapping.h> 32 #include <media/videobuf-dma-sg.h> 47 MODULE_DESCRIPTION("helper module to manage video4linux dma sg buffers"); 106 /* DMA to highmem pages might not work */ in videobuf_pages_to_sg() 141 return &mem->dma; in videobuf_to_dma() 145 static void videobuf_dma_init(struct videobuf_dmabuf *dma) in videobuf_dma_init() argument 147 memset(dma, 0, sizeof(*dma)); in videobuf_dma_init() 148 dma->magic = MAGIC_DMABUF; in videobuf_dma_init() 151 static int videobuf_dma_init_user_locked(struct videobuf_dmabuf *dma, in videobuf_dma_init_user_locked() argument [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/dma/ |
H A D | ti-dma-crossbar.txt | 1 Texas Instruments DMA Crossbar (DMA request router) 4 - compatible: "ti,dra7-dma-crossbar" for DRA7xx DMA crossbar 7 - #dma-cells: Should be set to match with the DMA controller's dma-cells 8 for ti,dra7-dma-crossbar and <3> for ti,am335x-edma-crossbar. 9 - dma-requests: Number of DMA requests the crossbar can receive 10 - dma-masters: phandle pointing to the DMA controller 12 The DMA controller node need to have the following poroperties: 13 - dma-requests: Number of DMA requests the controller can handle 16 - ti,dma-safe-map: Safe routing value for unused request lines 17 - ti,reserved-dma-request-ranges: DMA request ranges which should not be used [all …]
|
H A D | fsl-imx-dma.txt | 1 * Freescale Direct Memory Access (DMA) Controller for i.MX 3 This document will only describe differences to the generic DMA Controller and 4 DMA request bindings as described in dma/dma.txt . 6 * DMA controller 9 - compatible : Should be "fsl,<chip>-dma". chip can be imx1, imx21 or imx27 10 - reg : Should contain DMA registers location and length 11 - interrupts : First item should be DMA interrupt, second one is optional and 12 should contain DMA Error interrupt 13 - #dma-cells : Has to be 1. imx-dma does not support anything else. 16 - dma-channels : Number of DMA channels supported. Should be 16. [all …]
|
H A D | qcom,gpi.yaml | 4 $id: http://devicetree.org/schemas/dma/qcom,gpi.yaml# 7 title: Qualcomm Technologies Inc GPI DMA controller 13 QCOM GPI DMA controller provides DMA capabilities for 17 - $ref: dma-controller.yaml# 23 - qcom,sdm845-gpi-dma 24 - qcom,sm6350-gpi-dma 27 - qcom,qcm2290-gpi-dma 28 - qcom,qdu1000-gpi-dma 29 - qcom,sc7280-gpi-dma 30 - qcom,sm6115-gpi-dma [all …]
|
H A D | intel,ldma.yaml | 4 $id: http://devicetree.org/schemas/dma/intel,ldma.yaml# 7 title: Lightning Mountain centralized DMA controllers. 14 - $ref: dma-controller.yaml# 31 "#dma-cells": 34 The first cell is the peripheral's DMA request line. 38 dma-channels: 42 dma-channel-mask: 58 intel,dma-poll-cnt: 61 DMA descriptor polling counter is used to control the poling mechanism 64 intel,dma-byte-en: [all …]
|
/openbmc/linux/drivers/comedi/drivers/ |
H A D | comedi_isadma.c | 3 * COMEDI ISA DMA support functions 10 #include <linux/dma-mapping.h> 11 #include <linux/isa-dma.h> 16 * comedi_isadma_program - program and enable an ISA DMA transfer 17 * @desc: the ISA DMA cookie to program and enable 34 * comedi_isadma_disable - disable the ISA DMA channel 35 * @dma_chan: the DMA channel to disable 37 * Returns the residue (remaining bytes) left in the DMA transfer. 54 * comedi_isadma_disable_on_sample - disable the ISA DMA channel 55 * @dma_chan: the DMA channel to disable [all …]
|
/openbmc/linux/Documentation/driver-api/ |
H A D | dma-buf.rst | 1 Buffer Sharing and Synchronization (dma-buf) 4 The dma-buf subsystem provides the framework for sharing buffers for 5 hardware (DMA) access across multiple device drivers and subsystems, and 11 The three main components of this are: (1) dma-buf, representing a 17 Shared DMA Buffers 20 This document serves as a guide to device-driver writers on what is the dma-buf 23 Any device driver which wishes to be a part of DMA buffer sharing, can do so as 49 Any exporters or users of the dma-buf buffer sharing framework must have a 55 Mostly a DMA buffer file descriptor is simply an opaque object for userspace, 59 - Since kernel 3.12 the dma-buf FD supports the llseek system call, but only [all …]
|
/openbmc/linux/drivers/misc/bcm-vk/ |
H A D | bcm_vk_sg.c | 5 #include <linux/dma-mapping.h> 27 struct bcm_vk_dma *dma, 30 static int bcm_vk_dma_free(struct device *dev, struct bcm_vk_dma *dma); 36 struct bcm_vk_dma *dma, in bcm_vk_dma_alloc() argument 60 dma->nr_pages = last - first + 1; in bcm_vk_dma_alloc() 62 /* Allocate DMA pages */ in bcm_vk_dma_alloc() 63 dma->pages = kmalloc_array(dma->nr_pages, in bcm_vk_dma_alloc() 66 if (!dma->pages) in bcm_vk_dma_alloc() 69 dev_dbg(dev, "Alloc DMA Pages [0x%llx+0x%x => %d pages]\n", in bcm_vk_dma_alloc() 70 data, vkdata->size, dma->nr_pages); in bcm_vk_dma_alloc() [all …]
|
/openbmc/linux/drivers/soc/ti/ |
H A D | knav_dma.c | 12 #include <linux/dma-direction.h> 109 struct knav_dma_device *dma; member 212 /* wait for the dma to shut itself down */ in chan_teardown() 240 /* teardown the dma channel */ in chan_stop() 256 static void dma_hw_enable_all(struct knav_dma_device *dma) in dma_hw_enable_all() argument 260 for (i = 0; i < dma->max_tx_chan; i++) { in dma_hw_enable_all() 261 writel_relaxed(0, &dma->reg_tx_chan[i].mode); in dma_hw_enable_all() 262 writel_relaxed(DMA_ENABLE, &dma->reg_tx_chan[i].control); in dma_hw_enable_all() 267 static void knav_dma_hw_init(struct knav_dma_device *dma) in knav_dma_hw_init() argument 272 spin_lock(&dma->lock); in knav_dma_hw_init() [all …]
|
/openbmc/linux/drivers/media/pci/ivtv/ |
H A D | ivtv-udma.c | 3 User DMA 25 int ivtv_udma_fill_sg_list (struct ivtv_user_dma *dma, struct ivtv_dma_page_info *dma_page, int map… in ivtv_udma_fill_sg_list() argument 40 if (PageHighMem(dma->map[map_offset])) { in ivtv_udma_fill_sg_list() 43 if (dma->bouncemap[map_offset] == NULL) in ivtv_udma_fill_sg_list() 44 dma->bouncemap[map_offset] = alloc_page(GFP_KERNEL); in ivtv_udma_fill_sg_list() 45 if (dma->bouncemap[map_offset] == NULL) in ivtv_udma_fill_sg_list() 48 src = kmap_atomic(dma->map[map_offset]) + offset; in ivtv_udma_fill_sg_list() 49 memcpy(page_address(dma->bouncemap[map_offset]) + offset, src, len); in ivtv_udma_fill_sg_list() 52 sg_set_page(&dma->SGlist[map_offset], dma->bouncemap[map_offset], len, offset); in ivtv_udma_fill_sg_list() 55 sg_set_page(&dma->SGlist[map_offset], dma->map[map_offset], len, offset); in ivtv_udma_fill_sg_list() [all …]
|
/openbmc/linux/Documentation/devicetree/bindings/soc/ti/ |
H A D | keystone-navigator-dma.txt | 1 Keystone Navigator DMA Controller 3 This document explains the device tree bindings for the packet dma 4 on keystone devices. The Keystone Navigator DMA driver sets up the dma 8 CRYPTO Engines etc has its own instance of dma hardware. QMSS has also 9 an internal packet DMA module which is used as an infrastructure DMA 12 Navigator DMA cloud layout: 17 |-> DMA instance #0 19 |-> DMA instance #1 23 |-> DMA instance #n 25 Navigator DMA properties: [all …]
|
/openbmc/linux/arch/arm/mach-rpc/ |
H A D | dma.c | 3 * linux/arch/arm/mach-rpc/dma.c 7 * DMA functions specific to RiscPC architecture 12 #include <linux/dma-mapping.h> 16 #include <asm/dma.h> 22 #include <asm/mach/dma.h> 26 struct dma_struct dma; member 58 if (idma->dma.sg) { in iomd_get_next_sg() 76 if (idma->dma.sgcount > 1) { in iomd_get_next_sg() 77 idma->dma.sg = sg_next(idma->dma.sg); in iomd_get_next_sg() 78 idma->dma_addr = idma->dma.sg->dma_address; in iomd_get_next_sg() [all …]
|
/openbmc/linux/drivers/media/pci/netup_unidvb/ |
H A D | netup_unidvb_core.c | 58 /* DMA base address */ 61 /* 8 DMA blocks * 128 packets * 188 bytes*/ 64 /* DMA status bits */ 70 * struct netup_dma_regs - the map of DMA module registers 73 * @start_addr_lo: DMA ring buffer start address, lower part 74 * @start_addr_hi: DMA ring buffer start address, higher part 75 * @size: DMA ring buffer size register 76 * * Bits [0-7]: DMA packet size, 188 bytes 79 * @timeout: DMA timeout in units of 8ns 112 static void netup_unidvb_queue_cleanup(struct netup_dma *dma); [all …]
|