Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions | Variables
bfin_dma.c File Reference
#include <linux/errno.h>
#include <linux/interrupt.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/param.h>
#include <linux/proc_fs.h>
#include <linux/sched.h>
#include <linux/seq_file.h>
#include <linux/spinlock.h>
#include <asm/blackfin.h>
#include <asm/cacheflush.h>
#include <asm/dma.h>
#include <asm/uaccess.h>
#include <asm/early_printk.h>

Go to the source code of this file.

Macros

#define bfin_read_MDMA_S_CONFIG   bfin_read_MDMA_S0_CONFIG
 
#define bfin_write_MDMA_S_CONFIG   bfin_write_MDMA_S0_CONFIG
 
#define bfin_write_MDMA_S_START_ADDR   bfin_write_MDMA_S0_START_ADDR
 
#define bfin_write_MDMA_S_IRQ_STATUS   bfin_write_MDMA_S0_IRQ_STATUS
 
#define bfin_write_MDMA_S_X_COUNT   bfin_write_MDMA_S0_X_COUNT
 
#define bfin_write_MDMA_S_X_MODIFY   bfin_write_MDMA_S0_X_MODIFY
 
#define bfin_write_MDMA_S_Y_COUNT   bfin_write_MDMA_S0_Y_COUNT
 
#define bfin_write_MDMA_S_Y_MODIFY   bfin_write_MDMA_S0_Y_MODIFY
 
#define bfin_write_MDMA_D_CONFIG   bfin_write_MDMA_D0_CONFIG
 
#define bfin_write_MDMA_D_START_ADDR   bfin_write_MDMA_D0_START_ADDR
 
#define bfin_read_MDMA_D_IRQ_STATUS   bfin_read_MDMA_D0_IRQ_STATUS
 
#define bfin_write_MDMA_D_IRQ_STATUS   bfin_write_MDMA_D0_IRQ_STATUS
 
#define bfin_write_MDMA_D_X_COUNT   bfin_write_MDMA_D0_X_COUNT
 
#define bfin_write_MDMA_D_X_MODIFY   bfin_write_MDMA_D0_X_MODIFY
 
#define bfin_write_MDMA_D_Y_COUNT   bfin_write_MDMA_D0_Y_COUNT
 
#define bfin_write_MDMA_D_Y_MODIFY   bfin_write_MDMA_D0_Y_MODIFY
 
#define MAKE_DMA_IO(io, bwl, isize, dmasize, cnst)
 

Functions

 EXPORT_SYMBOL (dma_ch)
 
 arch_initcall (blackfin_dma_init)
 
int request_dma (unsigned int channel, const char *device_id)
 
 EXPORT_SYMBOL (request_dma)
 
int set_dma_callback (unsigned int channel, irq_handler_t callback, void *data)
 
 EXPORT_SYMBOL (set_dma_callback)
 
void free_dma (unsigned int channel)
 
 EXPORT_SYMBOL (free_dma)
 
void __init blackfin_dma_early_init (void)
 
void __init early_dma_memcpy (void *pdst, const void *psrc, size_t size)
 
void __init early_dma_memcpy_done (void)
 
voiddma_memcpy (void *pdst, const void *psrc, size_t size)
 
 EXPORT_SYMBOL (dma_memcpy)
 
voiddma_memcpy_nocache (void *pdst, const void *psrc, size_t size)
 
 EXPORT_SYMBOL (dma_memcpy_nocache)
 
voidsafe_dma_memcpy (void *dst, const void *src, size_t size)
 
 EXPORT_SYMBOL (safe_dma_memcpy)
 
 MAKE_DMA_IO (out, b, 1, 8, const)
 
 MAKE_DMA_IO (in, b, 1, 8,)
 
 MAKE_DMA_IO (out, w, 2, 16, const)
 
 MAKE_DMA_IO (in, w, 2, 16,)
 
 MAKE_DMA_IO (out, l, 4, 32, const)
 
 MAKE_DMA_IO (in, l, 4, 32,)
 

Variables

struct dma_channel dma_ch [MAX_DMA_CHANNELS]
 

Macro Definition Documentation

#define bfin_read_MDMA_D_IRQ_STATUS   bfin_read_MDMA_D0_IRQ_STATUS

Definition at line 392 of file bfin_dma.c.

#define bfin_read_MDMA_S_CONFIG   bfin_read_MDMA_S0_CONFIG

Definition at line 382 of file bfin_dma.c.

#define bfin_write_MDMA_D_CONFIG   bfin_write_MDMA_D0_CONFIG

Definition at line 390 of file bfin_dma.c.

#define bfin_write_MDMA_D_IRQ_STATUS   bfin_write_MDMA_D0_IRQ_STATUS

Definition at line 393 of file bfin_dma.c.

#define bfin_write_MDMA_D_START_ADDR   bfin_write_MDMA_D0_START_ADDR

Definition at line 391 of file bfin_dma.c.

#define bfin_write_MDMA_D_X_COUNT   bfin_write_MDMA_D0_X_COUNT

Definition at line 394 of file bfin_dma.c.

#define bfin_write_MDMA_D_X_MODIFY   bfin_write_MDMA_D0_X_MODIFY

Definition at line 395 of file bfin_dma.c.

#define bfin_write_MDMA_D_Y_COUNT   bfin_write_MDMA_D0_Y_COUNT

Definition at line 396 of file bfin_dma.c.

#define bfin_write_MDMA_D_Y_MODIFY   bfin_write_MDMA_D0_Y_MODIFY

Definition at line 397 of file bfin_dma.c.

#define bfin_write_MDMA_S_CONFIG   bfin_write_MDMA_S0_CONFIG

Definition at line 383 of file bfin_dma.c.

#define bfin_write_MDMA_S_IRQ_STATUS   bfin_write_MDMA_S0_IRQ_STATUS

Definition at line 385 of file bfin_dma.c.

#define bfin_write_MDMA_S_START_ADDR   bfin_write_MDMA_S0_START_ADDR

Definition at line 384 of file bfin_dma.c.

#define bfin_write_MDMA_S_X_COUNT   bfin_write_MDMA_S0_X_COUNT

Definition at line 386 of file bfin_dma.c.

#define bfin_write_MDMA_S_X_MODIFY   bfin_write_MDMA_S0_X_MODIFY

Definition at line 387 of file bfin_dma.c.

#define bfin_write_MDMA_S_Y_COUNT   bfin_write_MDMA_S0_Y_COUNT

Definition at line 388 of file bfin_dma.c.

#define bfin_write_MDMA_S_Y_MODIFY   bfin_write_MDMA_S0_Y_MODIFY

Definition at line 389 of file bfin_dma.c.

#define MAKE_DMA_IO (   io,
  bwl,
  isize,
  dmasize,
  cnst 
)
Value:
void dma_##io##s##bwl(unsigned long addr, cnst void *buf, unsigned DMA_MMR_SIZE_TYPE len) \
{ \
_dma_##io(addr, (unsigned long)buf, len, isize, WDSIZE_##dmasize); \
} \
EXPORT_SYMBOL(dma_##io##s##bwl)

Definition at line 601 of file bfin_dma.c.

Function Documentation

arch_initcall ( blackfin_dma_init  )
void __init blackfin_dma_early_init ( void  )

blackfin_dma_early_init - minimal DMA init

Setup a few DMA registers so we can safely do DMA transfers early on in the kernel booting process. Really this just means using dma_memcpy().

Definition at line 265 of file bfin_dma.c.

void* dma_memcpy ( void pdst,
const void psrc,
size_t  size 
)

dma_memcpy - DMA memcpy under mutex lock

Do not check arguments before starting the DMA memcpy. Break the transfer up into two pieces. The first transfer is in multiples of 64k and the second transfer is the piece smaller than 64k.

Definition at line 532 of file bfin_dma.c.

void* dma_memcpy_nocache ( void pdst,
const void psrc,
size_t  size 
)

dma_memcpy_nocache - DMA memcpy under mutex lock

  • No cache flush/invalidate

Do not check arguments before starting the DMA memcpy. Break the transfer up into two pieces. The first transfer is in multiples of 64k and the second transfer is the piece smaller than 64k.

Definition at line 555 of file bfin_dma.c.

void __init early_dma_memcpy ( void pdst,
const void psrc,
size_t  size 
)

Definition at line 272 of file bfin_dma.c.

void __init early_dma_memcpy_done ( void  )

Definition at line 341 of file bfin_dma.c.

EXPORT_SYMBOL ( dma_ch  )
EXPORT_SYMBOL ( request_dma  )
EXPORT_SYMBOL ( set_dma_callback  )
EXPORT_SYMBOL ( free_dma  )
EXPORT_SYMBOL ( dma_memcpy  )
EXPORT_SYMBOL ( dma_memcpy_nocache  )
EXPORT_SYMBOL ( safe_dma_memcpy  )
void free_dma ( unsigned int  channel)

Definition at line 190 of file bfin_dma.c.

MAKE_DMA_IO ( out  ,
b  ,
,
,
const   
)
MAKE_DMA_IO ( in  ,
b  ,
,
 
)
MAKE_DMA_IO ( out  ,
w  ,
,
16  ,
const   
)
MAKE_DMA_IO ( in  ,
w  ,
,
16   
)
MAKE_DMA_IO ( out  ,
l  ,
,
32  ,
const   
)
MAKE_DMA_IO ( in  ,
l  ,
,
32   
)
int request_dma ( unsigned int  channel,
const char device_id 
)

request_dma - request a DMA channel

Request the specific DMA channel from the system if it's available.

Definition at line 122 of file bfin_dma.c.

void* safe_dma_memcpy ( void dst,
const void src,
size_t  size 
)

safe_dma_memcpy - DMA memcpy w/argument checking

Verify arguments are safe before heading to dma_memcpy().

Definition at line 577 of file bfin_dma.c.

int set_dma_callback ( unsigned int  channel,
irq_handler_t  callback,
void data 
)

Definition at line 157 of file bfin_dma.c.

Variable Documentation

Definition at line 30 of file bfin_dma.c.