Lines Matching +full:db4 +full:- +full:db7
1 // SPDX-License-Identifier: GPL-2.0-only
32 #include <linux/dma-mapping.h>
49 outb(val, atp->baseport + reg); in atp_writeb_base()
54 outw(val, atp->baseport + reg); in atp_writew_base()
59 outb(val, atp->ioport[channel] + reg); in atp_writeb_io()
64 outw(val, atp->ioport[channel] + reg); in atp_writew_io()
69 outb(val, atp->pciport[channel] + reg); in atp_writeb_pci()
74 outl(val, atp->pciport[channel] + reg); in atp_writel_pci()
79 return inb(atp->baseport + reg); in atp_readb_base()
84 return inw(atp->baseport + reg); in atp_readw_base()
89 return inl(atp->baseport + reg); in atp_readl_base()
94 return inb(atp->ioport[channel] + reg); in atp_readb_io()
99 return inw(atp->ioport[channel] + reg); in atp_readw_io()
104 return inb(atp->pciport[channel] + reg); in atp_readb_pci()
109 return atp->pdev->device == ATP880_DEVID1 || in is880()
110 atp->pdev->device == ATP880_DEVID2; in is880()
115 return atp->pdev->device == ATP885_DEVID; in is885()
130 struct atp_unit *dev = (struct atp_unit *)&host->hostdata; in atp870u_intr_handle()
136 dev->in_int[c] = 0; in atp870u_intr_handle()
143 dev->in_int[c] = 1; in atp870u_intr_handle()
145 if (dev->working[c] != 0) { in atp870u_intr_handle()
179 if (dev->last_cmd[c] == 0xff) { in atp870u_intr_handle()
180 dev->last_cmd[c] = target_id; in atp870u_intr_handle()
182 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
185 dev->r1f[c][target_id] |= j; in atp870u_intr_handle()
190 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
191 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
198 if (dev->id[c][target_id].last_len != adrcnt) { in atp870u_intr_handle()
199 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
200 k -= adrcnt; in atp870u_intr_handle()
201 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
202 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
205 …printk("dev->id[c][target_id].last_len = %d dev->id[c][target_id].tran_len = %d\n",dev->id[c][targ… in atp870u_intr_handle()
212 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
220 spin_lock_irqsave(dev->host->host_lock, flags); in atp870u_intr_handle()
221 if (((dev->quhd[c] != dev->quend[c]) || (dev->last_cmd[c] != 0xff)) && in atp870u_intr_handle()
222 (dev->in_snd[c] == 0)) { in atp870u_intr_handle()
228 spin_unlock_irqrestore(dev->host->host_lock, flags); in atp870u_intr_handle()
232 dev->in_int[c] = 0; in atp870u_intr_handle()
240 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
241 dev->in_int[c] = 0; in atp870u_intr_handle()
246 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
247 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
253 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
254 k -= adrcnt; in atp870u_intr_handle()
255 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
256 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
259 dev->in_int[c] = 0; in atp870u_intr_handle()
280 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
281 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
291 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
292 k -= adrcnt; in atp870u_intr_handle()
293 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
294 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
296 dev->in_int[c] = 0; in atp870u_intr_handle()
303 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
308 dev->in_int[c] = 0; in atp870u_intr_handle()
312 if (dev->last_cmd[c] != 0xff) { in atp870u_intr_handle()
313 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
332 workreq = dev->id[c][target_id].curr_req; in atp870u_intr_handle()
335 for (l = 0; l < workreq->cmd_len; l++) in atp870u_intr_handle()
336 printk(KERN_DEBUG " %x",workreq->cmnd[l]); in atp870u_intr_handle()
341 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in atp870u_intr_handle()
342 adrcnt = dev->id[c][target_id].tran_len; in atp870u_intr_handle()
343 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
357 j |= dev->id[c][target_id].dirct; in atp870u_intr_handle()
364 //j=workreq->cmnd[0]; in atp870u_intr_handle()
365 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
370 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
375 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
386 if ((id & dev->wide_id[c]) != 0) { in atp870u_intr_handle()
392 if (dev->id[c][target_id].last_len == 0) { in atp870u_intr_handle()
394 dev->in_int[c] = 0; in atp870u_intr_handle()
396 printk("dev->id[c][target_id].last_len = 0\n"); in atp870u_intr_handle()
403 prd = dev->id[c][target_id].prd_pos; in atp870u_intr_handle()
413 (k - adrcnt); in atp870u_intr_handle()
416 dev->id[c][target_id].prd_pos = prd; in atp870u_intr_handle()
418 adrcnt -= k; in atp870u_intr_handle()
419 dev->id[c][target_id].prdaddr += 0x08; in atp870u_intr_handle()
422 dev->id[c][target_id].prd_pos = prd; in atp870u_intr_handle()
426 atp_writel_pci(dev, c, 0x04, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
428 printk("dev->id[%d][%d].prdaddr 0x%8x\n", c, target_id, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
437 if (dev->id[c][target_id].dirct != 0) { in atp870u_intr_handle()
440 dev->in_int[c] = 0; in atp870u_intr_handle()
448 dev->in_int[c] = 0; in atp870u_intr_handle()
459 workreq = dev->id[c][target_id].curr_req; in atp870u_intr_handle()
462 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
463 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
466 workreq->result = atp_readb_io(dev, c, 0x0f); in atp870u_intr_handle()
467 if (((dev->r1f[c][target_id] & 0x10) != 0) && is885(dev)) { in atp870u_intr_handle()
469 workreq->result = 0x02; in atp870u_intr_handle()
472 workreq->result = 0x02; in atp870u_intr_handle()
483 spin_lock_irqsave(dev->host->host_lock, flags); in atp870u_intr_handle()
484 (*workreq->scsi_done) (workreq); in atp870u_intr_handle()
486 printk("workreq->scsi_done\n"); in atp870u_intr_handle()
491 dev->id[c][target_id].curr_req = NULL; in atp870u_intr_handle()
492 dev->working[c]--; in atp870u_intr_handle()
493 spin_unlock_irqrestore(dev->host->host_lock, flags); in atp870u_intr_handle()
497 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
505 spin_lock_irqsave(dev->host->host_lock, flags); in atp870u_intr_handle()
506 if (((dev->last_cmd[c] != 0xff) || (dev->quhd[c] != dev->quend[c])) && in atp870u_intr_handle()
507 (dev->in_snd[c] == 0)) { in atp870u_intr_handle()
513 spin_unlock_irqrestore(dev->host->host_lock, flags); in atp870u_intr_handle()
514 dev->in_int[c] = 0; in atp870u_intr_handle()
517 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
518 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
525 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
530 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
534 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
536 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
540 dev->in_int[c] = 0; in atp870u_intr_handle()
544 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
549 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
555 dev->id[c][target_id].dirct = 0x20; in atp870u_intr_handle()
558 dev->in_int[c] = 0; in atp870u_intr_handle()
565 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
571 dev->in_int[c] = 0; in atp870u_intr_handle()
576 * atp870u_queuecommand - Queue SCSI command
591 req_p->sense_buffer[0]=0; in atp870u_queuecommand_lck()
594 req_p->result = 0x00040000; in atp870u_queuecommand_lck()
597 printk("atp870u_queuecommand : req_p->device->channel > 1\n"); in atp870u_queuecommand_lck()
602 host = req_p->device->host; in atp870u_queuecommand_lck()
603 dev = (struct atp_unit *)&host->hostdata; in atp870u_queuecommand_lck()
614 if ((m & dev->active_id[c]) == 0) { in atp870u_queuecommand_lck()
615 req_p->result = 0x00040000; in atp870u_queuecommand_lck()
621 req_p->scsi_done = done; in atp870u_queuecommand_lck()
626 req_p->result = 0; in atp870u_queuecommand_lck()
634 dev->quend[c]++; in atp870u_queuecommand_lck()
635 if (dev->quend[c] >= qcnt) { in atp870u_queuecommand_lck()
636 dev->quend[c] = 0; in atp870u_queuecommand_lck()
642 if (dev->quhd[c] == dev->quend[c]) { in atp870u_queuecommand_lck()
643 if (dev->quend[c] == 0) { in atp870u_queuecommand_lck()
644 dev->quend[c] = qcnt; in atp870u_queuecommand_lck()
647 printk("atp870u_queuecommand : dev->quhd[c] == dev->quend[c]\n"); in atp870u_queuecommand_lck()
649 dev->quend[c]--; in atp870u_queuecommand_lck()
650 req_p->result = 0x00020000; in atp870u_queuecommand_lck()
654 dev->quereq[c][dev->quend[c]] = req_p; in atp870u_queuecommand_lck()
656 …->ioport[c] = %x atp_readb_io(dev, c, 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n",dev-… in atp870u_queuecommand_lck()
658 if ((atp_readb_io(dev, c, 0x1c) == 0) && (dev->in_int[c] == 0) && (dev->in_snd[c] == 0)) { in atp870u_queuecommand_lck()
673 * send_s870 - send a command to the controller in DEF_SCSI_QCMD()
691 if (dev->in_snd[c] != 0) { in DEF_SCSI_QCMD()
700 dev->in_snd[c] = 1; in DEF_SCSI_QCMD()
701 if ((dev->last_cmd[c] != 0xff) && ((dev->last_cmd[c] & 0x40) != 0)) { in DEF_SCSI_QCMD()
702 dev->last_cmd[c] &= 0x0f; in DEF_SCSI_QCMD()
703 workreq = dev->id[c][dev->last_cmd[c]].curr_req; in DEF_SCSI_QCMD()
705 dev->last_cmd[c] = 0xff; in DEF_SCSI_QCMD()
706 if (dev->quhd[c] == dev->quend[c]) { in DEF_SCSI_QCMD()
707 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
713 if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) { in DEF_SCSI_QCMD()
714 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
717 dev->working[c]++; in DEF_SCSI_QCMD()
718 j = dev->quhd[c]; in DEF_SCSI_QCMD()
719 dev->quhd[c]++; in DEF_SCSI_QCMD()
720 if (dev->quhd[c] >= qcnt) in DEF_SCSI_QCMD()
721 dev->quhd[c] = 0; in DEF_SCSI_QCMD()
722 workreq = dev->quereq[c][dev->quhd[c]]; in DEF_SCSI_QCMD()
723 if (dev->id[c][scmd_id(workreq)].curr_req != NULL) { in DEF_SCSI_QCMD()
724 dev->quhd[c] = j; in DEF_SCSI_QCMD()
725 dev->working[c]--; in DEF_SCSI_QCMD()
726 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
729 dev->id[c][scmd_id(workreq)].curr_req = workreq; in DEF_SCSI_QCMD()
730 dev->last_cmd[c] = scmd_id(workreq); in DEF_SCSI_QCMD()
736 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
737 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
743 for(i=0;i<workreq->cmd_len;i++) { in DEF_SCSI_QCMD()
744 printk(" %x",workreq->cmnd[i]); in DEF_SCSI_QCMD()
753 dev->r1f[c][scmd_id(workreq)] = 0; in DEF_SCSI_QCMD()
756 if (workreq->cmnd[0] == READ_CAPACITY) { in DEF_SCSI_QCMD()
760 if (workreq->cmnd[0] == 0x00) { in DEF_SCSI_QCMD()
772 if ((w & dev->wide_id[c]) != 0) { in DEF_SCSI_QCMD()
786 atp_writeb_io(dev, c, 0x00, workreq->cmd_len); in DEF_SCSI_QCMD()
792 for (i = 0; i < workreq->cmd_len; i++) in DEF_SCSI_QCMD()
793 atp_writeb_io(dev, c, 0x03 + i, workreq->cmnd[i]); in DEF_SCSI_QCMD()
794 atp_writeb_io(dev, c, 0x0f, workreq->device->lun); in DEF_SCSI_QCMD()
798 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
800 printk("dev->id[%d][%d].devsp = %2x\n",c,target_id,dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
811 dev->id[c][j].last_len = l; in DEF_SCSI_QCMD()
812 dev->id[c][j].tran_len = 0; in DEF_SCSI_QCMD()
814 printk("dev->id[%2d][%2d].last_len = %d\n",c,j,dev->id[c][j].last_len); in DEF_SCSI_QCMD()
825 if (workreq->sc_data_direction == DMA_TO_DEVICE) in DEF_SCSI_QCMD()
831 dev->id[c][target_id].dirct = 0; in DEF_SCSI_QCMD()
839 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
840 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
843 prd = dev->id[c][target_id].prd_table; in DEF_SCSI_QCMD()
844 dev->id[c][target_id].prd_pos = prd; in DEF_SCSI_QCMD()
864 l -= 0x10000; in DEF_SCSI_QCMD()
873 (((u16 *) (prd))[i - 1]) = cpu_to_le16(0x8000); in DEF_SCSI_QCMD()
880 printk("send_s870: prdaddr_2 0x%8x target_id %d\n", dev->id[c][target_id].prdaddr,target_id); in DEF_SCSI_QCMD()
882 dev->id[c][target_id].prdaddr = dev->id[c][target_id].prd_bus; in DEF_SCSI_QCMD()
883 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in DEF_SCSI_QCMD()
888 if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || in DEF_SCSI_QCMD()
889 (workreq->cmnd[0] == 0x0a) || (workreq->cmnd[0] == 0x2a)) { in DEF_SCSI_QCMD()
894 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in DEF_SCSI_QCMD()
899 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in DEF_SCSI_QCMD()
905 if(workreq->sc_data_direction == DMA_TO_DEVICE) { in DEF_SCSI_QCMD()
906 dev->id[c][target_id].dirct = 0x20; in DEF_SCSI_QCMD()
914 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
916 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
926 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
928 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
942 if ((k & 0x8000) != 0) /* DB7 all release? */ in fun_scam()
953 *val |= 0x8000; /* no DB4-0, assert DB7 */ in fun_scam()
973 struct atp_unit *dev = (struct atp_unit *)&host->hostdata; in tscam()
993 m <<= dev->host_id[0]; in tscam()
1072 val |= 0x8003; /* io,cd,db7 */ in tscam()
1125 i--; in tscam()
1148 k--; in tscam()
1161 k--; in tscam()
1190 struct atp_unit *atp_dev = (struct atp_unit *)&host->hostdata; in atp870u_free_tables()
1194 if (!atp_dev->id[j][k].prd_table) in atp870u_free_tables()
1196 …dma_free_coherent(&atp_dev->pdev->dev, 1024, atp_dev->id[j][k].prd_table, atp_dev->id[j][k].prd_bu… in atp870u_free_tables()
1197 atp_dev->id[j][k].prd_table = NULL; in atp870u_free_tables()
1204 struct atp_unit *atp_dev = (struct atp_unit *)&host->hostdata; in atp870u_init_tables()
1208 …atp_dev->id[c][k].prd_table = dma_alloc_coherent(&atp_dev->pdev->dev, 1024, &(atp_dev->id[c][k].pr… in atp870u_init_tables()
1209 if (!atp_dev->id[c][k].prd_table) { in atp870u_init_tables()
1212 return -ENOMEM; in atp870u_init_tables()
1214 atp_dev->id[c][k].prdaddr = atp_dev->id[c][k].prd_bus; in atp870u_init_tables()
1215 atp_dev->id[c][k].devsp=0x20; in atp870u_init_tables()
1216 atp_dev->id[c][k].devtype = 0x7f; in atp870u_init_tables()
1217 atp_dev->id[c][k].curr_req = NULL; in atp870u_init_tables()
1220 atp_dev->active_id[c] = 0; in atp870u_init_tables()
1221 atp_dev->wide_id[c] = 0; in atp870u_init_tables()
1222 atp_dev->host_id[c] = 0x07; in atp870u_init_tables()
1223 atp_dev->quhd[c] = 0; in atp870u_init_tables()
1224 atp_dev->quend[c] = 0; in atp870u_init_tables()
1225 atp_dev->last_cmd[c] = 0xff; in atp870u_init_tables()
1226 atp_dev->in_snd[c] = 0; in atp870u_init_tables()
1227 atp_dev->in_int[c] = 0; in atp870u_init_tables()
1230 atp_dev->quereq[c][k] = NULL; in atp870u_init_tables()
1233 atp_dev->id[c][k].curr_req = NULL; in atp870u_init_tables()
1234 atp_dev->sp[c][k] = 0x04; in atp870u_init_tables()
1255 struct pci_dev *pdev = atpdev->pdev; in atp870_init()
1259 (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7610 && in atp870_init()
1260 pdev->revision == 4) || in atp870_init()
1261 (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7612UW) || in atp870_init()
1262 (pdev->device == PCI_DEVICE_ID_ARTOP_AEC7612SUW); in atp870_init()
1266 dev_info(&pdev->dev, "ACARD AEC-671X PCI Ultra/W SCSI-2/3 Host Adapter: IO:%lx, IRQ:%d.\n", in atp870_init()
1267 shpnt->io_port, shpnt->irq); in atp870_init()
1269 atpdev->ioport[0] = shpnt->io_port; in atp870_init()
1270 atpdev->pciport[0] = shpnt->io_port + 0x20; in atp870_init()
1272 atpdev->host_id[0] = host_id; in atp870_init()
1274 atpdev->global_map[0] = atp_readb_base(atpdev, 0x2d); in atp870_init()
1275 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x2e); in atp870_init()
1277 if (atpdev->ultra_map[0] == 0) { in atp870_init()
1279 atpdev->global_map[0] = 0x20; in atp870_init()
1280 atpdev->ultra_map[0] = 0xffff; in atp870_init()
1283 if (pdev->revision > 0x07) /* check if atp876 chip */ in atp870_init()
1299 shpnt->max_id = wide_chip ? 16 : 8; in atp870_init()
1300 shpnt->this_id = host_id; in atp870_init()
1306 struct pci_dev *pdev = atpdev->pdev; in atp880_init()
1312 atpdev->ioport[0] = shpnt->io_port + 0x40; in atp880_init()
1313 atpdev->pciport[0] = shpnt->io_port + 0x28; in atp880_init()
1317 dev_info(&pdev->dev, "ACARD AEC-67160 PCI Ultra3 LVD Host Adapter: IO:%lx, IRQ:%d.\n", in atp880_init()
1318 shpnt->io_port, shpnt->irq); in atp880_init()
1319 atpdev->host_id[0] = host_id; in atp880_init()
1321 atpdev->global_map[0] = atp_readb_base(atpdev, 0x35); in atp880_init()
1322 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x3c); in atp880_init()
1332 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1333 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1334 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1335 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1338 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1339 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1340 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1341 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1344 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1345 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1346 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1347 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1350 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1351 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1352 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1353 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1357 atpdev->ultra_map[0] = 0; in atp880_init()
1358 atpdev->async[0] = 0; in atp880_init()
1361 if (atpdev->sp[0][k] > 1) in atp880_init()
1362 atpdev->ultra_map[0] |= n; in atp880_init()
1364 if (atpdev->sp[0][k] == 0) in atp880_init()
1365 atpdev->async[0] |= n; in atp880_init()
1367 atpdev->async[0] = ~(atpdev->async[0]); in atp880_init()
1368 atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]); in atp880_init()
1384 shpnt->max_id = 16; in atp880_init()
1385 shpnt->this_id = host_id; in atp880_init()
1391 struct pci_dev *pdev = atpdev->pdev; in atp885_init()
1396 dev_info(&pdev->dev, "ACARD AEC-67162 PCI Ultra3 LVD Host Adapter: IO:%lx, IRQ:%d.\n", in atp885_init()
1397 shpnt->io_port, shpnt->irq); in atp885_init()
1399 atpdev->ioport[0] = shpnt->io_port + 0x80; in atp885_init()
1400 atpdev->ioport[1] = shpnt->io_port + 0xc0; in atp885_init()
1401 atpdev->pciport[0] = shpnt->io_port + 0x40; in atp885_init()
1402 atpdev->pciport[1] = shpnt->io_port + 0x50; in atp885_init()
1413 atpdev->global_map[m] = 0; in atp885_init()
1420 ((u32 *)&atpdev->sp[m][0])[k] = atp_readl_base(atpdev, 0x38); in atp885_init()
1428 atpdev->ultra_map[c] = 0; in atp885_init()
1429 atpdev->async[c] = 0; in atp885_init()
1432 if (atpdev->sp[c][k] > 1) in atp885_init()
1433 atpdev->ultra_map[c] |= n; in atp885_init()
1435 if (atpdev->sp[c][k] == 0) in atp885_init()
1436 atpdev->async[c] |= n; in atp885_init()
1438 atpdev->async[c] = ~(atpdev->async[c]); in atp885_init()
1440 if (atpdev->global_map[c] == 0) { in atp885_init()
1443 atpdev->global_map[c] |= 0x20; in atp885_init()
1445 atpdev->global_map[c] |= k; in atp885_init()
1447 atpdev->global_map[c] |= 0x08; in atp885_init()
1448 atpdev->host_id[c] = setupdata[c][0] & 0x07; in atp885_init()
1466 k = atpdev->host_id[0]; in atp885_init()
1471 k = atpdev->host_id[1]; in atp885_init()
1477 dev_info(&pdev->dev, "Scanning Channel A SCSI Device ...\n"); in atp885_init()
1480 dev_info(&pdev->dev, "Scanning Channel B SCSI Device ...\n"); in atp885_init()
1490 shpnt->max_id = 16; in atp885_init()
1491 shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1; in atp885_init()
1492 shpnt->max_channel = 1; in atp885_init()
1493 shpnt->this_id = atpdev->host_id[0]; in atp885_init()
1496 /* return non-zero on detection */
1503 if (ent->device == PCI_DEVICE_ID_ARTOP_AEC7610 && pdev->revision < 2) { in atp870u_probe()
1504 dev_err(&pdev->dev, "ATP850S chips (AEC6710L/F cards) are not supported.\n"); in atp870u_probe()
1505 return -ENODEV; in atp870u_probe()
1512 if (dma_set_mask(&pdev->dev, DMA_BIT_MASK(32))) { in atp870u_probe()
1514 err = -EIO; in atp870u_probe()
1523 err = -ENOMEM; in atp870u_probe()
1530 atpdev->host = shpnt; in atp870u_probe()
1531 atpdev->pdev = pdev; in atp870u_probe()
1534 shpnt->io_port = pci_resource_start(pdev, 0); in atp870u_probe()
1535 shpnt->io_port &= 0xfffffff8; in atp870u_probe()
1536 shpnt->n_io_port = pci_resource_len(pdev, 0); in atp870u_probe()
1537 atpdev->baseport = shpnt->io_port; in atp870u_probe()
1538 shpnt->unique_id = shpnt->io_port; in atp870u_probe()
1539 shpnt->irq = pdev->irq; in atp870u_probe()
1543 dev_err(&pdev->dev, "Unable to allocate tables for Acard controller\n"); in atp870u_probe()
1554 err = request_irq(shpnt->irq, atp870u_intr_handle, IRQF_SHARED, "atp870u", shpnt); in atp870u_probe()
1556 dev_err(&pdev->dev, "Unable to allocate IRQ %d.\n", shpnt->irq); in atp870u_probe()
1560 err = scsi_add_host(shpnt, &pdev->dev); in atp870u_probe()
1568 free_irq(shpnt->irq, shpnt); in atp870u_probe()
1591 host = SCpnt->device->host; in atp870u_abort()
1593 dev = (struct atp_unit *)&host->hostdata; in atp870u_abort()
1596 printk("working=%x last_cmd=%x ", dev->working[c], dev->last_cmd[c]); in atp870u_abort()
1597 printk(" quhdu=%x quendu=%x ", dev->quhd[c], dev->quend[c]); in atp870u_abort()
1602 printk(" r1f=%2x in_snd=%2x ", atp_readb_io(dev, c, 0x1f), dev->in_snd[c]); in atp870u_abort()
1606 if (dev->id[c][j].curr_req != NULL) { in atp870u_abort()
1607 workrequ = dev->id[c][j].curr_req; in atp870u_abort()
1609 for (k=0; k < workrequ->cmd_len; k++) { in atp870u_abort()
1610 printk(" %2x ",workrequ->cmnd[k]); in atp870u_abort()
1612 printk(" last_lenu= %x ",(unsigned int)dev->id[c][j].last_len); in atp870u_abort()
1622 strcpy(buffer, "ACARD AEC-6710/6712/67160 PCI Ultra/W/LVD SCSI-3 Adapter Driver V2.6+ac "); in atp870u_info()
1629 seq_puts(m, "ACARD AEC-671X Driver Version: 2.6+ac\n\n" in atp870u_show_info()
1631 seq_printf(m, " Base IO: %#.4lx\n", HBAptr->io_port); in atp870u_show_info()
1632 seq_printf(m, " IRQ: %d\n", HBAptr->irq); in atp870u_show_info()
1660 struct Scsi_Host *pshost = devext->host; in atp870u_remove()
1664 free_irq(pshost->irq, pshost); in atp870u_remove()
1732 if ((m & dev->active_id[c]) != 0) { in atp_is()
1735 if (i == dev->host_id[c]) { in atp_is()
1736 printk(KERN_INFO " ID: %2d Host Adapter\n", dev->host_id[c]); in atp_is()
1749 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1769 dev->active_id[c] |= m; in atp_is()
1774 else /* result of is870() merge - is this a bug? */ in atp_is()
1796 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1844 dev->id[c][i].devtype = mbuf[0]; in atp_is()
1853 if ((i < 8) && ((dev->global_map[c] & 0x20) == 0)) in atp_is()
1855 } else { /* result of is870() merge - is this a bug? */ in atp_is()
1856 if ((dev->global_map[c] & 0x20) == 0) in atp_is()
1862 if (dev->sp[c][i] != 0x04) // force u2 in atp_is()
1875 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1983 dev->wide_id[c] |= m; in atp_is()
1984 dev->id[c][i].devsp = 0xce; in atp_is()
1986 printk("dev->id[%2d][%2d].devsp = %2x\n",c,i,dev->id[c][i].devsp); in atp_is()
1999 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2110 dev->wide_id[c] |= m; in atp_is()
2112 …if ((dev->id[c][i].devtype == 0x00) || (dev->id[c][i].devtype == 0x07) || ((dev->id[c][i].devtype … in atp_is()
2115 if ((dev->async[c] & m) != 0) { in atp_is()
2121 if ((!is885(dev) && !is880(dev)) || (dev->sp[c][i] == 0x02)) { in atp_is()
2125 if (dev->sp[c][i] >= 0x03) { in atp_is()
2131 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2142 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2164 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2166 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2174 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2287 dev->id[c][i].devsp = mbuf[4]; in atp_is()
2311 dev->id[c][i].devsp = (dev->id[c][i].devsp & 0x0f) | j; in atp_is()
2313 printk("dev->id[%2d][%2d].devsp = %2x\n",c,i,dev->id[c][i].devsp); in atp_is()