Lines Matching refs:c
140 static int cpqarray_pci_init(ctlr_info_t *c, struct pci_dev *pdev);
148 static void cmd_free(ctlr_info_t *h, cmdlist_t *c, int got_from_pool);
171 static inline void addQ(cmdlist_t **Qptr, cmdlist_t *c);
172 static inline cmdlist_t *removeQ(cmdlist_t **Qptr, cmdlist_t *c);
236 cmdlist_t *c; in ida_proc_show() local
273 c = h->reqQ; in ida_proc_show()
274 seq_printf(m, "reqQ = %p", c); in ida_proc_show()
275 if (c) c=c->next; in ida_proc_show()
276 while(c && c != h->reqQ) { in ida_proc_show()
277 seq_printf(m, "->%p", c); in ida_proc_show()
278 c=c->next; in ida_proc_show()
281 c = h->cmpQ; in ida_proc_show()
282 seq_printf(m, "\ncmpQ = %p", c); in ida_proc_show()
283 if (c) c=c->next; in ida_proc_show()
284 while(c && c != h->cmpQ) { in ida_proc_show()
285 seq_printf(m, "->%p", c); in ida_proc_show()
286 c=c->next; in ida_proc_show()
313 static void release_io_mem(ctlr_info_t *c) in release_io_mem() argument
316 if( c->io_mem_addr == 0) in release_io_mem()
318 release_region(c->io_mem_addr, c->io_mem_length); in release_io_mem()
319 c->io_mem_addr = 0; in release_io_mem()
320 c->io_mem_length = 0; in release_io_mem()
605 static int cpqarray_pci_init(ctlr_info_t *c, struct pci_dev *pdev) in cpqarray_pci_init() argument
615 c->pci_dev = pdev; in cpqarray_pci_init()
661 c->intr = irq; in cpqarray_pci_init()
666 c->io_mem_addr = addr[i]; in cpqarray_pci_init()
667 c->io_mem_length = pci_resource_end(pdev, i) in cpqarray_pci_init()
669 if(!request_region( c->io_mem_addr, c->io_mem_length, in cpqarray_pci_init()
672 …"cpqarray I/O memory range already in use addr %lx length = %ld\n", c->io_mem_addr, c->io_mem_leng… in cpqarray_pci_init()
673 c->io_mem_addr = 0; in cpqarray_pci_init()
674 c->io_mem_length = 0; in cpqarray_pci_init()
680 c->paddr = 0; in cpqarray_pci_init()
684 c->paddr = pci_resource_start (pdev, i); in cpqarray_pci_init()
687 if (!c->paddr) in cpqarray_pci_init()
689 c->vaddr = remap_pci_mem(c->paddr, 128); in cpqarray_pci_init()
690 if (!c->vaddr) in cpqarray_pci_init()
692 c->board_id = board_id; in cpqarray_pci_init()
696 c->product_name = products[i].product_name; in cpqarray_pci_init()
697 c->access = *(products[i].access); in cpqarray_pci_init()
872 static inline void addQ(cmdlist_t **Qptr, cmdlist_t *c) in addQ() argument
875 *Qptr = c; in addQ()
876 c->next = c->prev = c; in addQ()
878 c->prev = (*Qptr)->prev; in addQ()
879 c->next = (*Qptr); in addQ()
880 (*Qptr)->prev->next = c; in addQ()
881 (*Qptr)->prev = c; in addQ()
885 static inline cmdlist_t *removeQ(cmdlist_t **Qptr, cmdlist_t *c) in removeQ() argument
887 if (c && c->next != c) { in removeQ()
888 if (*Qptr == c) *Qptr = c->next; in removeQ()
889 c->prev->next = c->next; in removeQ()
890 c->next->prev = c->prev; in removeQ()
894 return c; in removeQ()
907 cmdlist_t *c; in do_ida_request() local
919 if ((c = cmd_alloc(h,1)) == NULL) in do_ida_request()
924 c->ctlr = h->ctlr; in do_ida_request()
925 c->hdr.unit = (drv_info_t *)(creq->rq_disk->private_data) - h->drv; in do_ida_request()
926 c->hdr.size = sizeof(rblk_t) >> 2; in do_ida_request()
927 c->size += sizeof(rblk_t); in do_ida_request()
929 c->req.hdr.blk = blk_rq_pos(creq); in do_ida_request()
930 c->rq = creq; in do_ida_request()
945 c->req.sg[i].size = tmp_sg[i].length; in do_ida_request()
946 c->req.sg[i].addr = (__u32) pci_map_page(h->pci_dev, in do_ida_request()
952 c->req.hdr.sg_cnt = seg; in do_ida_request()
953 c->req.hdr.blk_cnt = blk_rq_sectors(creq); in do_ida_request()
954 c->req.hdr.cmd = (rq_data_dir(creq) == READ) ? IDA_READ : IDA_WRITE; in do_ida_request()
955 c->type = CMD_RWREQ; in do_ida_request()
958 addQ(&h->reqQ, c); in do_ida_request()
977 cmdlist_t *c; in start_io() local
979 while((c = h->reqQ) != NULL) { in start_io()
985 removeQ(&h->reqQ, c); in start_io()
989 h->access.submit_command(h, c); in start_io()
992 addQ(&h->cmpQ, c); in start_io()
1046 cmdlist_t *c; in do_ida_intr() local
1064 if ((c = h->cmpQ) == NULL) in do_ida_intr()
1069 while(c->busaddr != a) { in do_ida_intr()
1070 c = c->next; in do_ida_intr()
1071 if (c == h->cmpQ) in do_ida_intr()
1078 if (c->busaddr == a) { in do_ida_intr()
1079 removeQ(&h->cmpQ, c); in do_ida_intr()
1085 if((a1 & 0x03) && (c->req.hdr.rcode == 0)) in do_ida_intr()
1087 c->req.hdr.rcode = RCODE_INVREQ; in do_ida_intr()
1089 if (c->type == CMD_RWREQ) { in do_ida_intr()
1090 complete_command(c, 0); in do_ida_intr()
1091 cmd_free(h, c, 1); in do_ida_intr()
1092 } else if (c->type == CMD_IOCTL_PEND) { in do_ida_intr()
1093 c->type = CMD_IOCTL_DONE; in do_ida_intr()
1154 if (copy_to_user(&io->c.drv, drv, sizeof(drv_info_t))) in ida_locked_ioctl()
1237 cmdlist_t *c; in ida_ctlr_ioctl() local
1242 if ((c = cmd_alloc(h, 0)) == NULL) in ida_ctlr_ioctl()
1244 c->ctlr = ctlr; in ida_ctlr_ioctl()
1245 c->hdr.unit = (io->unit & UNITVALID) ? (io->unit & ~UNITVALID) : dsk; in ida_ctlr_ioctl()
1246 c->hdr.size = sizeof(rblk_t) >> 2; in ida_ctlr_ioctl()
1247 c->size += sizeof(rblk_t); in ida_ctlr_ioctl()
1249 c->req.hdr.cmd = io->cmd; in ida_ctlr_ioctl()
1250 c->req.hdr.blk = io->blk; in ida_ctlr_ioctl()
1251 c->req.hdr.blk_cnt = io->blk_cnt; in ida_ctlr_ioctl()
1252 c->type = CMD_IOCTL_PEND; in ida_ctlr_ioctl()
1260 cmd_free(h, c, 0); in ida_ctlr_ioctl()
1263 c->req.hdr.blk = pci_map_single(h->pci_dev, &(io->c), in ida_ctlr_ioctl()
1266 c->req.sg[0].size = io->sg[0].size; in ida_ctlr_ioctl()
1267 c->req.sg[0].addr = pci_map_single(h->pci_dev, p, in ida_ctlr_ioctl()
1268 c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in ida_ctlr_ioctl()
1269 c->req.hdr.sg_cnt = 1; in ida_ctlr_ioctl()
1278 cmd_free(h, c, 0); in ida_ctlr_ioctl()
1282 c->req.sg[0].size = io->sg[0].size; in ida_ctlr_ioctl()
1283 c->req.sg[0].addr = pci_map_single(h->pci_dev, p, in ida_ctlr_ioctl()
1284 c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in ida_ctlr_ioctl()
1285 c->req.hdr.sg_cnt = 1; in ida_ctlr_ioctl()
1295 cmd_free(h, c, 0); in ida_ctlr_ioctl()
1298 c->req.sg[0].size = io->sg[0].size; in ida_ctlr_ioctl()
1299 c->req.sg[0].addr = pci_map_single(h->pci_dev, p, in ida_ctlr_ioctl()
1300 c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in ida_ctlr_ioctl()
1301 c->req.hdr.sg_cnt = 1; in ida_ctlr_ioctl()
1304 c->req.sg[0].size = sizeof(io->c); in ida_ctlr_ioctl()
1305 c->req.sg[0].addr = pci_map_single(h->pci_dev,&io->c, in ida_ctlr_ioctl()
1306 c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in ida_ctlr_ioctl()
1307 c->req.hdr.sg_cnt = 1; in ida_ctlr_ioctl()
1312 addQ(&h->reqQ, c); in ida_ctlr_ioctl()
1318 while(c->type != CMD_IOCTL_DONE) in ida_ctlr_ioctl()
1322 pci_unmap_single(h->pci_dev, c->req.sg[0].addr, c->req.sg[0].size, in ida_ctlr_ioctl()
1327 pci_unmap_single(h->pci_dev, c->req.hdr.blk, in ida_ctlr_ioctl()
1349 io->rcode = c->req.hdr.rcode; in ida_ctlr_ioctl()
1350 cmd_free(h, c, 0); in ida_ctlr_ioctl()
1362 cmdlist_t * c; in cmd_alloc() local
1367 c = (cmdlist_t*)pci_alloc_consistent(h->pci_dev, in cmd_alloc()
1369 if(c==NULL) in cmd_alloc()
1377 c = h->cmd_pool + i; in cmd_alloc()
1382 memset(c, 0, sizeof(cmdlist_t)); in cmd_alloc()
1383 c->busaddr = cmd_dhandle; in cmd_alloc()
1384 return c; in cmd_alloc()
1387 static void cmd_free(ctlr_info_t *h, cmdlist_t *c, int got_from_pool) in cmd_free() argument
1392 pci_free_consistent(h->pci_dev, sizeof(cmdlist_t), c, in cmd_free()
1393 c->busaddr); in cmd_free()
1395 i = c - h->cmd_pool; in cmd_free()
1416 cmdlist_t *c; in sendcmd() local
1422 c = cmd_alloc(info_p, 1); in sendcmd()
1423 if(!c) in sendcmd()
1425 c->ctlr = ctlr; in sendcmd()
1426 c->hdr.unit = log_unit; in sendcmd()
1427 c->hdr.prio = 0; in sendcmd()
1428 c->hdr.size = sizeof(rblk_t) >> 2; in sendcmd()
1429 c->size += sizeof(rblk_t); in sendcmd()
1432 c->req.hdr.next = 0; in sendcmd()
1433 c->req.hdr.rcode = 0; in sendcmd()
1434 c->req.bp = 0; in sendcmd()
1435 c->req.hdr.sg_cnt = 1; in sendcmd()
1436 c->req.hdr.reserved = 0; in sendcmd()
1439 c->req.sg[0].size = 512; in sendcmd()
1441 c->req.sg[0].size = size; in sendcmd()
1443 c->req.hdr.blk = blk; in sendcmd()
1444 c->req.hdr.blk_cnt = blkcnt; in sendcmd()
1445 c->req.hdr.cmd = (unsigned char) cmd; in sendcmd()
1446 c->req.sg[0].addr = (__u32) pci_map_single(info_p->pci_dev, in sendcmd()
1447 buff, c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in sendcmd()
1468 info_p->access.submit_command(info_p, c); in sendcmd()
1471 pci_unmap_single(info_p->pci_dev, (dma_addr_t) c->req.sg[0].addr, in sendcmd()
1472 c->req.sg[0].size, PCI_DMA_BIDIRECTIONAL); in sendcmd()
1474 if (complete != c->busaddr) { in sendcmd()
1479 cmd_free(info_p, c, 1); in sendcmd()
1487 cmd_free(info_p, c, 1); in sendcmd()
1491 if (c->req.hdr.rcode & 0x00FE) { in sendcmd()
1492 if (!(c->req.hdr.rcode & BIG_PROBLEM)) { in sendcmd()
1497 ctlr, c->req.hdr.cmd, c->req.hdr.rcode); in sendcmd()
1499 cmd_free(info_p, c, 1); in sendcmd()
1503 cmd_free(info_p, c, 1); in sendcmd()