Annotation of margi2/dram.h, revision 1.1.1.1
1.1 cvs 1: /*
2: dram.h
3:
4: Copyright (C) Christian Wolff for convergence integrated media.
5:
6: This program is free software; you can redistribute it and/or modify
7: it under the terms of the GNU General Public License as published by
8: the Free Software Foundation; either version 2 of the License, or
9: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19: */
20:
21: #ifndef DRAM_H
22: #define DRAM_H
23:
24: /////////////////////////////////
25: // //
26: // L64021 DRAM Memory Access //
27: // //
28: /////////////////////////////////
29:
30: #include "cardbase.h"
31:
32: // where: 21 bit DRAM Word-Address, 4 word aligned
33: // size: bytes (8 byte aligned, remainder will be filled with fill value)
34: // data: fill value
35: // returns 0 on success, -1 on collision with DMA transfer
36: int DRAMFillByte(struct cvdv_cards *card, u32 where, int size, u8 data);
37:
38: // where: 21 bit DRAM Word-Address, 8 byte aligned
39: // size: bytes (8 byte aligned, remainder will be filled with garbage)
40: // swap: 0=normal mode, 1=write each 8 bytes on reverse order (7,6,5,4,3,2,1,0,15,14,13,etc.)
41: // returns 0 on success, -1 on collision with DMA transfer
42: int DRAMWriteByte(struct cvdv_cards *card, u32 where, int size, u8 * data,
43: int swapburst);
44:
45: // where: 21 bit DRAM Word-Address, 4 word aligned
46: // size: words (4 word aligned, remainder will be filled with garbage)
47: // swap: 0=normal mode, 1=write each 8 bytes on reverse order (7,6,5,4,3,2,1,0,15,14,13,etc.)
48: // returns 0 on success, -1 on collision with DMA transfer
49: int DRAMWriteWord(struct cvdv_cards *card, u32 where, int size, u16 * data,
50: int swap);
51:
52: // where: 21 bit DRAM Word-Address, 8 byte aligned
53: // size: bytes
54: // swap: 0=normal mode, 1=write each 8 bytes on reverse order (7,6,5,4,3,2,1,0,15,14,13,etc.)
55: // returns 0 on success, -1 on collision with DMA transfer
56: int DRAMReadByte(struct cvdv_cards *card, u32 where, int size, u8 * data,
57: int swap);
58:
59:
60: // where: 21 bit DRAM Word-Address, 4 word aligned
61: // size: words
62: // swap: 0=normal mode, 1=write each 8 bytes on reverse order (7,6,5,4,3,2,1,0,15,14,13,etc.)
63: // returns 0 on success, -1 on collision with DMA transfer
64: int DRAMReadWord(struct cvdv_cards *card, u32 where, int size, u16 * data,
65: int swap);
66:
67: // where: 21 bit DRAM Word-Address, 4 word aligned
68: // size: words
69: // swap: 0=normal mode, 1=write each 8 bytes on reverse order (7,6,5,4,3,2,1,0,15,14,13,etc.)
70: // returns -1 on success (equal content),
71: // word position on error (compare failure),
72: // -2 on collision with DMA transfer
73: int DRAMVerifyWord(struct cvdv_cards *card, u32 where, int size,
74: u16 * data, int swap);
75:
76: // WARNING: better not use this one. It can collide with normal DRAM access and other DMA transfers
77: // If you want to use it, implement card->DMAMoveBusy in all other DMA functions, initialisation, and header file
78: // source, destination: 21 bit DRAM Word-Address, 4 word aligned
79: // size: byte (8 byte aligned, hang over bytes will NOT be moved)
80: // returns 0 on success on success,
81: // -1 on collision with DMA transfer,
82: // -2 on interrupt handler not installed
83: int DRAMMove(struct cvdv_cards *card, u32 source, u32 destination,
84: int size);
85:
86: // size in words
87: // align: number of words on wich start of block will be aligned
88: // return value is 21 bit word address, or 0xFFFFFFFF on error
89: u32 DRAMAlloc(struct cvdv_cards *card, u32 size, int align);
90:
91: // addr is the return value of that resp. DRAMAlloc call
92: // returns 0 on success (always)
93: int DRAMFree(struct cvdv_cards *card, u32 addr);
94:
95: // free all blocks
96: // returns 0 on success (always)
97: int DRAMRelease(struct cvdv_cards *card);
98:
99: #endif /* DRAM_H */
LinuxTV legacy CVS <linuxtv.org/cvs>