Lines Matching +full:ctrl +full:- +full:len
4 * Copyright 1995-2002, Russell King
16 #define priv(host) ((struct NCR5380_hostdata *)(host)->hostdata)
30 unsigned ctrl
38 #define CTRL 0x16fc macro
44 unsigned char *addr, int len) in cumanascsi_pwrite() argument
47 u8 __iomem *base = hostdata->io; in cumanascsi_pwrite()
48 u8 __iomem *dma = hostdata->pdma_io + 0x2000; in cumanascsi_pwrite()
50 if(!len) return 0; in cumanascsi_pwrite()
52 writeb(0x02, base + CTRL); in cumanascsi_pwrite()
54 while(len >= 32) in cumanascsi_pwrite()
71 len -= 32; in cumanascsi_pwrite()
72 if(len == 0) in cumanascsi_pwrite()
77 writeb(0x12, base + CTRL); in cumanascsi_pwrite()
79 while(len > 0) in cumanascsi_pwrite()
88 if(--len == 0) in cumanascsi_pwrite()
98 if(--len == 0) in cumanascsi_pwrite()
103 writeb(hostdata->ctrl | 0x40, base + CTRL); in cumanascsi_pwrite()
105 if (len) in cumanascsi_pwrite()
106 return -1; in cumanascsi_pwrite()
111 unsigned char *addr, int len) in cumanascsi_pread() argument
114 u8 __iomem *base = hostdata->io; in cumanascsi_pread()
115 u8 __iomem *dma = hostdata->pdma_io + 0x2000; in cumanascsi_pread()
117 if(!len) return 0; in cumanascsi_pread()
119 writeb(0x00, base + CTRL); in cumanascsi_pread()
121 while(len >= 32) in cumanascsi_pread()
137 len -= 32; in cumanascsi_pread()
138 if(len == 0) in cumanascsi_pread()
143 writeb(0x10, base + CTRL); in cumanascsi_pread()
145 while(len > 0) in cumanascsi_pread()
154 if(--len == 0) in cumanascsi_pread()
164 if(--len == 0) in cumanascsi_pread()
169 writeb(hostdata->ctrl | 0x40, base + CTRL); in cumanascsi_pread()
171 if (len) in cumanascsi_pread()
172 return -1; in cumanascsi_pread()
179 return cmd->transfersize; in cumanascsi_dma_xfer_len()
185 u8 __iomem *base = hostdata->io; in cumanascsi_read()
188 writeb(0, base + CTRL); in cumanascsi_read()
192 hostdata->ctrl = 0x40; in cumanascsi_read()
193 writeb(0x40, base + CTRL); in cumanascsi_read()
201 u8 __iomem *base = hostdata->io; in cumanascsi_write()
203 writeb(0, base + CTRL); in cumanascsi_write()
207 hostdata->ctrl = 0x40; in cumanascsi_write()
208 writeb(0x40, base + CTRL); in cumanascsi_write()
215 .name = "Cumana 16-bit SCSI",
225 .proc_name = "CumanaSCSI-1",
242 ret = -ENOMEM; in cumanascsi1_probe()
246 priv(host)->io = ioremap(ecard_resource_start(ec, ECARD_RES_IOCSLOW), in cumanascsi1_probe()
248 priv(host)->pdma_io = ioremap(ecard_resource_start(ec, ECARD_RES_MEMC), in cumanascsi1_probe()
250 if (!priv(host)->io || !priv(host)->pdma_io) { in cumanascsi1_probe()
251 ret = -ENOMEM; in cumanascsi1_probe()
255 host->irq = ec->irq; in cumanascsi1_probe()
263 priv(host)->ctrl = 0; in cumanascsi1_probe()
264 writeb(0, priv(host)->io + CTRL); in cumanascsi1_probe()
266 ret = request_irq(host->irq, cumanascsi_intr, 0, in cumanascsi1_probe()
267 "CumanaSCSI-1", host); in cumanascsi1_probe()
270 host->host_no, host->irq, ret); in cumanascsi1_probe()
274 ret = scsi_add_host(host, &ec->dev); in cumanascsi1_probe()
282 free_irq(host->irq, host); in cumanascsi1_probe()
286 iounmap(priv(host)->io); in cumanascsi1_probe()
287 iounmap(priv(host)->pdma_io); in cumanascsi1_probe()
298 void __iomem *base = priv(host)->io; in cumanascsi1_remove()
299 void __iomem *dma = priv(host)->pdma_io; in cumanascsi1_remove()
304 free_irq(host->irq, host); in cumanascsi1_remove()
339 MODULE_DESCRIPTION("Cumana SCSI-1 driver for Acorn machines");