Lines Matching refs:mantis

35 #define RISC_INSTR(risc_pos, opcode)	(mantis->risc_cpu[risc_pos++] = cpu_to_le32(opcode))
46 int mantis_dma_exit(struct mantis_pci *mantis)
48 if (mantis->buf_cpu) {
51 (unsigned long) mantis->buf_dma,
52 mantis->buf_cpu,
55 pci_free_consistent(mantis->pdev, MANTIS_BUF_SIZE,
56 mantis->buf_cpu, mantis->buf_dma);
58 mantis->buf_cpu = NULL;
60 if (mantis->risc_cpu) {
63 (unsigned long) mantis->risc_dma,
64 mantis->risc_cpu,
67 pci_free_consistent(mantis->pdev, MANTIS_RISC_SIZE,
68 mantis->risc_cpu, mantis->risc_dma);
70 mantis->risc_cpu = NULL;
77 static inline int mantis_alloc_buffers(struct mantis_pci *mantis)
79 if (!mantis->buf_cpu) {
80 mantis->buf_cpu = pci_alloc_consistent(mantis->pdev,
82 &mantis->buf_dma);
83 if (!mantis->buf_cpu) {
91 (unsigned long) mantis->buf_dma,
92 mantis->buf_cpu, MANTIS_BUF_SIZE);
94 if (!mantis->risc_cpu) {
95 mantis->risc_cpu = pci_alloc_consistent(mantis->pdev,
97 &mantis->risc_dma);
99 if (!mantis->risc_cpu) {
103 mantis_dma_exit(mantis);
109 (unsigned long) mantis->risc_dma,
110 mantis->risc_cpu, MANTIS_RISC_SIZE);
119 int mantis_dma_init(struct mantis_pci *mantis)
124 err = mantis_alloc_buffers(mantis);
138 static inline void mantis_risc_program(struct mantis_pci *mantis)
161 RISC_INSTR(risc_pos, mantis->buf_dma + buf_pos);
166 RISC_INSTR(risc_pos, mantis->risc_dma);
169 void mantis_dma_start(struct mantis_pci *mantis)
173 mantis_risc_program(mantis);
174 mmwrite(mantis->risc_dma, MANTIS_RISC_START);
178 mantis->last_block = mantis->busy_block = 0;
180 mantis_unmask_ints(mantis, MANTIS_INT_RISCI);
187 void mantis_dma_stop(struct mantis_pci *mantis)
199 mantis_mask_ints(mantis, MANTIS_INT_RISCI | MANTIS_INT_RISCEN);
205 struct mantis_pci *mantis = from_tasklet(mantis, t, tasklet);
206 struct mantis_hwconfig *config = mantis->hwconfig;
208 while (mantis->last_block != mantis->busy_block) {
210 mantis->last_block, mantis->busy_block);
213 (&mantis->demux, &mantis->buf_cpu[mantis->last_block * MANTIS_BLOCK_BYTES], MANTIS_BLOCK_BYTES);
214 mantis->last_block = (mantis->last_block + 1) % MANTIS_BLOCK_COUNT;