Blame view

drivers/dma/coh901318_lli.h 3.41 KB
61f135b92   Linus Walleij   Add COH 901 318 D...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
  /*
   * driver/dma/coh901318_lli.h
   *
   * Copyright (C) 2007-2009 ST-Ericsson
   * License terms: GNU General Public License (GPL) version 2
   * Support functions for handling lli for coh901318
   * Author: Per Friden <per.friden@stericsson.com>
   */
  
  #ifndef COH901318_LLI_H
  #define COH901318_LLI_H
  
  #include <mach/coh901318.h>
  
  struct device;
  
  struct coh901318_pool {
  	spinlock_t lock;
  	struct dma_pool *dmapool;
  	struct device *dev;
  
  #ifdef CONFIG_DEBUG_FS
  	int debugfs_pool_counter;
  #endif
  };
  
  struct device;
  /**
   * coh901318_pool_create() - Creates an dma pool for lli:s
   * @pool: pool handle
   * @dev: dma device
   * @lli_nbr: number of lli:s in the pool
3ad2f3fbb   Daniel Mack   tree-wide: Assort...
33
   * @algin: address alignemtn of lli:s
61f135b92   Linus Walleij   Add COH 901 318 D...
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
   * returns 0 on success otherwise none zero
   */
  int coh901318_pool_create(struct coh901318_pool *pool,
  			  struct device *dev,
  			  size_t lli_nbr, size_t align);
  
  /**
   * coh901318_pool_destroy() - Destroys the dma pool
   * @pool: pool handle
   * returns 0 on success otherwise none zero
   */
  int coh901318_pool_destroy(struct coh901318_pool *pool);
  
  /**
   * coh901318_lli_alloc() - Allocates a linked list
   *
   * @pool: pool handle
   * @len: length to list
   * return: none NULL if success otherwise NULL
   */
  struct coh901318_lli *
  coh901318_lli_alloc(struct coh901318_pool *pool,
  		    unsigned int len);
  
  /**
   * coh901318_lli_free() - Returns the linked list items to the pool
   * @pool: pool handle
   * @lli: reference to lli pointer to be freed
   */
  void coh901318_lli_free(struct coh901318_pool *pool,
  			struct coh901318_lli **lli);
  
  /**
   * coh901318_lli_fill_memcpy() - Prepares the lli:s for dma memcpy
   * @pool: pool handle
   * @lli: allocated lli
   * @src: src address
   * @size: transfer size
   * @dst: destination address
   * @ctrl_chained: ctrl for chained lli
   * @ctrl_last: ctrl for the last lli
   * returns number of CPU interrupts for the lli, negative on error.
   */
  int
  coh901318_lli_fill_memcpy(struct coh901318_pool *pool,
  			  struct coh901318_lli *lli,
  			  dma_addr_t src, unsigned int size,
  			  dma_addr_t dst, u32 ctrl_chained, u32 ctrl_last);
  
  /**
   * coh901318_lli_fill_single() - Prepares the lli:s for dma single transfer
   * @pool: pool handle
   * @lli: allocated lli
   * @buf: transfer buffer
   * @size: transfer size
   * @dev_addr: address of periphal
   * @ctrl_chained: ctrl for chained lli
   * @ctrl_last: ctrl for the last lli
   * @dir: direction of transfer (to or from device)
   * returns number of CPU interrupts for the lli, negative on error.
   */
  int
  coh901318_lli_fill_single(struct coh901318_pool *pool,
  			  struct coh901318_lli *lli,
  			  dma_addr_t buf, unsigned int size,
  			  dma_addr_t dev_addr, u32 ctrl_chained, u32 ctrl_last,
  			  enum dma_data_direction dir);
  
  /**
   * coh901318_lli_fill_single() - Prepares the lli:s for dma scatter list transfer
   * @pool: pool handle
   * @lli: allocated lli
   * @sg: scatter gather list
   * @nents: number of entries in sg
   * @dev_addr: address of periphal
   * @ctrl_chained: ctrl for chained lli
   * @ctrl: ctrl of middle lli
   * @ctrl_last: ctrl for the last lli
   * @dir: direction of transfer (to or from device)
   * @ctrl_irq_mask: ctrl mask for CPU interrupt
   * returns number of CPU interrupts for the lli, negative on error.
   */
  int
  coh901318_lli_fill_sg(struct coh901318_pool *pool,
  		      struct coh901318_lli *lli,
  		      struct scatterlist *sg, unsigned int nents,
  		      dma_addr_t dev_addr, u32 ctrl_chained,
  		      u32 ctrl, u32 ctrl_last,
  		      enum dma_data_direction dir, u32 ctrl_irq_mask);
  
  #endif /* COH901318_LLI_H */