Merge branch 'dmaengine' into async-tx-raid6
This commit is contained in:
@@ -21,6 +21,15 @@
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/interrupt.h>
|
||||
|
||||
/* on architectures without dma-mapping capabilities we need to ensure
|
||||
* that the asynchronous path compiles away
|
||||
*/
|
||||
#ifdef CONFIG_HAS_DMA
|
||||
#define __async_inline
|
||||
#else
|
||||
#define __async_inline __always_inline
|
||||
#endif
|
||||
|
||||
/**
|
||||
* dma_chan_ref - object used to manage dma channels received from the
|
||||
* dmaengine core.
|
||||
|
||||
@@ -23,9 +23,6 @@
|
||||
|
||||
#include <linux/device.h>
|
||||
#include <linux/uio.h>
|
||||
#include <linux/kref.h>
|
||||
#include <linux/completion.h>
|
||||
#include <linux/rcupdate.h>
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
/**
|
||||
@@ -205,6 +202,7 @@ struct dma_async_tx_descriptor {
|
||||
/**
|
||||
* struct dma_device - info on the entity supplying DMA services
|
||||
* @chancnt: how many DMA channels are supported
|
||||
* @privatecnt: how many DMA channels are requested by dma_request_channel
|
||||
* @channels: the list of struct dma_chan
|
||||
* @global_node: list_head for global dma_device_list
|
||||
* @cap_mask: one or more dma_capability flags
|
||||
@@ -227,6 +225,7 @@ struct dma_async_tx_descriptor {
|
||||
struct dma_device {
|
||||
|
||||
unsigned int chancnt;
|
||||
unsigned int privatecnt;
|
||||
struct list_head channels;
|
||||
struct list_head global_node;
|
||||
dma_cap_mask_t cap_mask;
|
||||
@@ -291,6 +290,24 @@ static inline void net_dmaengine_put(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ASYNC_TX_DMA
|
||||
#define async_dmaengine_get() dmaengine_get()
|
||||
#define async_dmaengine_put() dmaengine_put()
|
||||
#define async_dma_find_channel(type) dma_find_channel(type)
|
||||
#else
|
||||
static inline void async_dmaengine_get(void)
|
||||
{
|
||||
}
|
||||
static inline void async_dmaengine_put(void)
|
||||
{
|
||||
}
|
||||
static inline struct dma_chan *
|
||||
async_dma_find_channel(enum dma_transaction_type type)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
dma_cookie_t dma_async_memcpy_buf_to_buf(struct dma_chan *chan,
|
||||
void *dest, void *src, size_t len);
|
||||
dma_cookie_t dma_async_memcpy_buf_to_pg(struct dma_chan *chan,
|
||||
@@ -337,6 +354,13 @@ __dma_cap_set(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp)
|
||||
set_bit(tx_type, dstp->bits);
|
||||
}
|
||||
|
||||
#define dma_cap_clear(tx, mask) __dma_cap_clear((tx), &(mask))
|
||||
static inline void
|
||||
__dma_cap_clear(enum dma_transaction_type tx_type, dma_cap_mask_t *dstp)
|
||||
{
|
||||
clear_bit(tx_type, dstp->bits);
|
||||
}
|
||||
|
||||
#define dma_cap_zero(mask) __dma_cap_zero(&(mask))
|
||||
static inline void __dma_cap_zero(dma_cap_mask_t *dstp)
|
||||
{
|
||||
|
||||
@@ -74,4 +74,23 @@ struct dw_dma_slave {
|
||||
#define DWC_CFGL_HS_DST_POL (1 << 18) /* dst handshake active low */
|
||||
#define DWC_CFGL_HS_SRC_POL (1 << 19) /* src handshake active low */
|
||||
|
||||
/* DMA API extensions */
|
||||
struct dw_cyclic_desc {
|
||||
struct dw_desc **desc;
|
||||
unsigned long periods;
|
||||
void (*period_callback)(void *param);
|
||||
void *period_callback_param;
|
||||
};
|
||||
|
||||
struct dw_cyclic_desc *dw_dma_cyclic_prep(struct dma_chan *chan,
|
||||
dma_addr_t buf_addr, size_t buf_len, size_t period_len,
|
||||
enum dma_data_direction direction);
|
||||
void dw_dma_cyclic_free(struct dma_chan *chan);
|
||||
int dw_dma_cyclic_start(struct dma_chan *chan);
|
||||
void dw_dma_cyclic_stop(struct dma_chan *chan);
|
||||
|
||||
dma_addr_t dw_dma_get_src_addr(struct dma_chan *chan);
|
||||
|
||||
dma_addr_t dw_dma_get_dst_addr(struct dma_chan *chan);
|
||||
|
||||
#endif /* DW_DMAC_H */
|
||||
|
||||
@@ -276,4 +276,7 @@ struct mm_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct mm_struct's cpu_vm_mask. */
|
||||
#define mm_cpumask(mm) (&(mm)->cpu_vm_mask)
|
||||
|
||||
#endif /* _LINUX_MM_TYPES_H */
|
||||
|
||||
@@ -1419,6 +1419,9 @@ struct task_struct {
|
||||
#endif
|
||||
};
|
||||
|
||||
/* Future-safe accessor for struct task_struct's cpus_allowed. */
|
||||
#define tsk_cpumask(tsk) (&(tsk)->cpus_allowed)
|
||||
|
||||
/*
|
||||
* Priority of a process goes from 0..MAX_PRIO-1, valid RT
|
||||
* priority is 0..MAX_RT_PRIO-1, and SCHED_NORMAL/SCHED_BATCH
|
||||
|
||||
Reference in New Issue
Block a user