Lines Matching +full:transfer +full:- +full:function

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 1997-2000 Russell King, Stefan Hanske
12 * 30-08-1997 RMK 0.0.0 Created, READONLY version as cumana_2.c
13 * 22-01-1998 RMK 0.0.1 Updated to 2.1.80
14 * 15-04-1998 RMK 0.0.1 Only do PIO if FAS216 will allow it.
15 * 11-06-1998 SH 0.0.2 Changed to support ARXE 16-bit SCSI card
17 * 01-01-2000 SH 0.1.0 Added *real* pseudo dma writing
19 * 02-04-2000 RMK 0.1.1 Updated for new error handling code.
20 * 22-10-2000 SH Updated for new registering scheme.
62 * Function: int arxescsi_dma_setup(host, SCpnt, direction, min_type)
64 * Params : host - host
65 * SCpnt - command
66 * direction - DMA on to/off of card
67 * min_type - minimum DMA support that we must have for this transfer
68 * Returns : 0 if we should not set CMD_WITHDMA for transfer info command
83 " stmdb sp!, {r0-r12}\n" in arxescsi_pseudo_dma_write()
94 " stmia r2, {r5-r8}\n\t" in arxescsi_pseudo_dma_write()
100 " stmia r2, {r9-r12}\n" in arxescsi_pseudo_dma_write()
103 " ldmia sp!, {r0-r12}\n" in arxescsi_pseudo_dma_write()
109 * Function: int arxescsi_dma_pseudo(host, SCpnt, direction, transfer)
111 * Params : host - host
112 * SCpnt - command
113 * direction - DMA on to/off of card
114 * transfer - minimum number of bytes we expect to transfer
118 fasdmadir_t direction, int transfer) in arxescsi_dma_pseudo() argument
120 struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata; in arxescsi_dma_pseudo()
122 void __iomem *base = info->info.scsi.io_base; in arxescsi_dma_pseudo()
125 length = SCp->this_residual; in arxescsi_dma_pseudo()
126 addr = SCp->ptr; in arxescsi_dma_pseudo()
137 length -= 256; in arxescsi_dma_pseudo()
153 length -= 2; in arxescsi_dma_pseudo()
156 length -= 1; in arxescsi_dma_pseudo()
161 if (transfer && (transfer & 255)) { in arxescsi_dma_pseudo()
173 length -= 256; in arxescsi_dma_pseudo()
189 if (--length > 0) { in arxescsi_dma_pseudo()
191 length --; in arxescsi_dma_pseudo()
198 * Function: int arxescsi_dma_stop(host, SCpnt)
200 * Params : host - host
201 * SCpnt - command
211 * Function: const char *arxescsi_info(struct Scsi_Host * host)
213 * Params : host - driver host structure to return info for.
218 struct arxescsi_info *info = (struct arxescsi_info *)host->hostdata; in arxescsi_info()
222 host->hostt->name, info->info.scsi.type, info->ec->slot_no, in arxescsi_info()
232 info = (struct arxescsi_info *)host->hostdata; in arxescsi_show_info()
234 seq_printf(m, "ARXE 16-bit SCSI driver v%s\n", VERSION); in arxescsi_show_info()
235 fas216_print_host(&info->info, m); in arxescsi_show_info()
236 fas216_print_stats(&info->info, m); in arxescsi_show_info()
237 fas216_print_devices(&info->info, m); in arxescsi_show_info()
254 .dma_boundary = PAGE_SIZE - 1,
271 ret = -ENOMEM; in arxescsi_probe()
277 ret = -ENOMEM; in arxescsi_probe()
281 info = (struct arxescsi_info *)host->hostdata; in arxescsi_probe()
282 info->ec = ec; in arxescsi_probe()
283 info->base = base; in arxescsi_probe()
285 info->info.scsi.io_base = base + 0x2000; in arxescsi_probe()
286 info->info.scsi.irq = 0; in arxescsi_probe()
287 info->info.scsi.dma = NO_DMA; in arxescsi_probe()
288 info->info.scsi.io_shift = 5; in arxescsi_probe()
289 info->info.ifcfg.clockrate = 24; /* MHz */ in arxescsi_probe()
290 info->info.ifcfg.select_timeout = 255; in arxescsi_probe()
291 info->info.ifcfg.asyncperiod = 200; /* ns */ in arxescsi_probe()
292 info->info.ifcfg.sync_max_depth = 0; in arxescsi_probe()
293 info->info.ifcfg.cntl3 = CNTL3_FASTSCSI | CNTL3_FASTCLK; in arxescsi_probe()
294 info->info.ifcfg.disconnect_ok = 0; in arxescsi_probe()
295 info->info.ifcfg.wide_max_size = 0; in arxescsi_probe()
296 info->info.ifcfg.capabilities = FASCAP_PSEUDODMA; in arxescsi_probe()
297 info->info.dma.setup = arxescsi_dma_setup; in arxescsi_probe()
298 info->info.dma.pseudo = arxescsi_dma_pseudo; in arxescsi_probe()
299 info->info.dma.stop = arxescsi_dma_stop; in arxescsi_probe()
301 ec->irqaddr = base; in arxescsi_probe()
302 ec->irqmask = CSTATUS_IRQ; in arxescsi_probe()
308 ret = fas216_add(host, &ec->dev); in arxescsi_probe()