Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
sound
pci
ctxfi
ctvmem.h
Go to the documentation of this file.
1
18
#ifndef CTVMEM_H
19
#define CTVMEM_H
20
21
#define CT_PTP_NUM 4
/* num of device page table pages */
22
23
#include <
linux/mutex.h
>
24
#include <linux/list.h>
25
#include <linux/pci.h>
26
#include <
sound/memalloc.h
>
27
28
/* The chip can handle the page table of 4k pages
29
* (emu20k1 can handle even 8k pages, but we don't use it right now)
30
*/
31
#define CT_PAGE_SIZE 4096
32
#define CT_PAGE_SHIFT 12
33
#define CT_PAGE_MASK (~(PAGE_SIZE - 1))
34
#define CT_PAGE_ALIGN(addr) ALIGN(addr, CT_PAGE_SIZE)
35
36
struct
ct_vm_block
{
37
unsigned
int
addr
;
/* starting logical addr of this block */
38
unsigned
int
size
;
/* size of this device virtual mem block */
39
struct
list_head
list
;
40
};
41
42
struct
snd_pcm_substream
;
43
44
/* Virtual memory management object for card device */
45
struct
ct_vm
{
46
struct
snd_dma_buffer
ptp
[
CT_PTP_NUM
];
/* Device page table pages */
47
unsigned
int
size
;
/* Available addr space in bytes */
48
struct
list_head
unused
;
/* List of unused blocks */
49
struct
list_head
used
;
/* List of used blocks */
50
struct
mutex
lock
;
51
52
/* Map host addr (kmalloced/vmalloced) to device logical addr. */
53
struct
ct_vm_block
*(*map)(
struct
ct_vm
*,
struct
snd_pcm_substream
*,
54
int
size
);
55
/* Unmap device logical addr area. */
56
void
(*
unmap
)(
struct
ct_vm
*,
struct
ct_vm_block
*
block
);
57
dma_addr_t
(*
get_ptp_phys
)(
struct
ct_vm
*
vm
,
int
index
);
58
};
59
60
int
ct_vm_create
(
struct
ct_vm
**rvm,
struct
pci_dev
*pci);
61
void
ct_vm_destroy
(
struct
ct_vm
*
vm
);
62
63
#endif
/* CTVMEM_H */
Generated on Thu Jan 10 2013 15:06:05 for Linux Kernel by
1.8.2