Lines Matching +full:j +full:- +full:to +full:- +full:k
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()
122 unsigned char i, j, c, target_id, lun,cmdp; in atp870u_intr_handle() local
125 unsigned long adrcnt, k; in atp870u_intr_handle() local
130 struct atp_unit *dev = (struct atp_unit *)&host->hostdata; in atp870u_intr_handle()
133 j = atp_readb_io(dev, c, 0x1f); in atp870u_intr_handle()
134 if ((j & 0x80) != 0) in atp870u_intr_handle()
136 dev->in_int[c] = 0; in atp870u_intr_handle()
138 if ((j & 0x80) == 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()
152 for (k=0; k < 1000; k++) { in atp870u_intr_handle()
178 if ((j & 0x40) != 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()
316 j = atp_readb_base(dev, 0x29) & 0xfe; in atp870u_intr_handle()
317 atp_writeb_base(dev, 0x29, j); 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()
345 atp_writeb_io(dev, c, 0x12, ((unsigned char *) &k)[2]); in atp870u_intr_handle()
346 atp_writeb_io(dev, c, 0x13, ((unsigned char *) &k)[1]); in atp870u_intr_handle()
347 atp_writeb_io(dev, c, 0x14, ((unsigned char *) &k)[0]); in atp870u_intr_handle()
349 …printk("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n", k, atp_readb_io(dev, c, 0x14), atp_readb_io(dev, c… in atp870u_intr_handle()
352 j = target_id; in atp870u_intr_handle()
354 j = (j & 0x07) | 0x40; in atp870u_intr_handle()
357 j |= dev->id[c][target_id].dirct; in atp870u_intr_handle()
358 atp_writeb_io(dev, c, 0x15, j); 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()
380 j = 0; in atp870u_intr_handle()
386 if ((id & dev->wide_id[c]) != 0) { in atp870u_intr_handle()
387 j |= 0x01; in atp870u_intr_handle()
389 atp_writeb_io(dev, c, 0x1b, j); in atp870u_intr_handle()
390 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) in atp870u_intr_handle()
391 atp_writeb_io(dev, c, 0x1b, j); 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()
407 k = 0x10000; in atp870u_intr_handle()
409 k = id; in atp870u_intr_handle()
411 if (k > adrcnt) { 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()
475 j = atp_readb_base(dev, 0x29) | 0x01; in atp870u_intr_handle()
476 atp_writeb_base(dev, 0x29, j); 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()
503 * If there is stuff to send and nothing going then send it 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()
531 atp_writeb_io(dev, c, 0x12, ((unsigned char *) (&k))[2]); in atp870u_intr_handle()
532 atp_writeb_io(dev, c, 0x13, ((unsigned char *) (&k))[1]); in atp870u_intr_handle()
533 atp_writeb_io(dev, c, 0x14, ((unsigned char *) (&k))[0]); 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()
550 atp_writeb_io(dev, c, 0x12, ((unsigned char *) (&k))[2]); in atp870u_intr_handle()
551 atp_writeb_io(dev, c, 0x13, ((unsigned char *) (&k))[1]); in atp870u_intr_handle()
552 atp_writeb_io(dev, c, 0x14, ((unsigned char *) (&k))[0]); 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
580 * Queue a command to the ATP queue. Called with the host lock held.
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()
676 * On entry there is work queued to be done. We move some of that work to the in DEF_SCSI_QCMD()
684 unsigned int i;//,k; in DEF_SCSI_QCMD()
685 unsigned char j, target_id; in DEF_SCSI_QCMD() local
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()
734 printk("Abort to Send\n"); in DEF_SCSI_QCMD()
736 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
737 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
741 printk("OK to Send\n"); 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()
751 j = atp_readb_base(dev, 0x29) & 0xfe; in DEF_SCSI_QCMD()
752 atp_writeb_base(dev, 0x29, j); 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()
764 j = 0; in DEF_SCSI_QCMD()
772 if ((w & dev->wide_id[c]) != 0) { in DEF_SCSI_QCMD()
773 j |= 0x01; in DEF_SCSI_QCMD()
775 atp_writeb_io(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
776 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) { in DEF_SCSI_QCMD()
777 atp_writeb_pci(dev, c, 0x1b, j); 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()
810 j = target_id; 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()
819 if ((j & 0x08) != 0) { in DEF_SCSI_QCMD()
820 j = (j & 0x07) | 0x40; in DEF_SCSI_QCMD()
825 if (workreq->sc_data_direction == DMA_TO_DEVICE) in DEF_SCSI_QCMD()
826 atp_writeb_io(dev, c, 0x15, j | 0x20); in DEF_SCSI_QCMD()
828 atp_writeb_io(dev, c, 0x15, j); 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()
854 scsi_for_each_sg(workreq, sgpnt, sg_count, j) { 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()
887 j = atp_readb_pci(dev, c, 1) & 0xf3; 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()
890 j |= 0x0c; in DEF_SCSI_QCMD()
892 atp_writeb_pci(dev, c, 1, j); 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()
911 printk( "start DMA(to target)\n"); in DEF_SCSI_QCMD()
914 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
916 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
923 printk( "start DMA(to host)\n"); in DEF_SCSI_QCMD()
926 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
928 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
935 unsigned short int i, k; in fun_scam() local
936 unsigned char j; in fun_scam() local
940 k = atp_readw_io(dev, 0, 0x1c); in fun_scam()
941 j = (unsigned char) (k >> 8); in fun_scam()
942 if ((k & 0x8000) != 0) /* DB7 all release? */ in fun_scam()
953 *val |= 0x8000; /* no DB4-0, assert DB7 */ in fun_scam()
963 return j; in fun_scam()
969 unsigned char i, j, k; in tscam() local
973 struct atp_unit *dev = (struct atp_unit *)&host->hostdata; in tscam()
993 m <<= dev->host_id[0]; in tscam()
994 j = 16; in tscam()
997 j = 8; in tscam()
1008 for (i = 0; i < j; i++) { in tscam()
1019 k = (i & 0x07) | 0x40; in tscam()
1021 k = i; in tscam()
1023 atp_writeb_io(dev, 0, 0x15, k); in tscam()
1033 k = atp_readb_io(dev, 0, 0x17); in tscam()
1034 if ((k == 0x85) || (k == 0x42)) in tscam()
1036 if (k != 0x16) in tscam()
1038 } while (k != 0x16); in tscam()
1039 if ((k == 0x85) || (k == 0x42)) in tscam()
1082 * The funny division into multiple delays is to accomodate in tscam()
1084 * a large number to initialize a loop counter. To avoid in tscam()
1087 * XXX it would be more polite to find a way to use msleep() in tscam()
1110 j = 0; in tscam()
1118 k = fun_scam(dev, &val); in tscam()
1119 if ((k & 0x03) == 0) in tscam()
1121 mbuf[j] <<= 0x01; in tscam()
1122 mbuf[j] &= 0xfe; in tscam()
1123 if ((k & 0x02) != 0) in tscam()
1124 mbuf[j] |= 0x01; in tscam()
1125 i--; in tscam()
1128 j++; in tscam()
1136 j = mbuf[0]; in tscam()
1137 if ((j & 0x20) != 0) { /* bit5=1:ID up to 7 */ in tscam()
1140 if ((j & 0x06) != 0) { /* IDvalid? */ in tscam()
1141 k = mbuf[1]; in tscam()
1144 m <<= k; in tscam()
1147 if (k > 0) in tscam()
1148 k--; in tscam()
1154 k = i; /* max acceptable ID# */ in tscam()
1157 m <<= k; in tscam()
1160 if (k > 0) in tscam()
1161 k--; in tscam()
1166 /* k=binID#, */ in tscam()
1168 if (k < 8) { in tscam()
1173 k &= 0x07; in tscam()
1174 quintet[1] = g2q_tab[k]; in tscam()
1190 struct atp_unit *atp_dev = (struct atp_unit *)&host->hostdata; in atp870u_free_tables()
1191 int j, k; in atp870u_free_tables() local
1192 for (j=0; j < 2; j++) { in atp870u_free_tables()
1193 for (k = 0; k < 16; k++) { 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()
1205 int c,k; in atp870u_init_tables() local
1207 for(k=0;k<16;k++) { 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()
1229 for (k = 0; k < qcnt; k++) { in atp870u_init_tables()
1230 atp_dev->quereq[c][k] = NULL; in atp870u_init_tables()
1232 for (k = 0; k < 16; k++) { 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()
1256 unsigned char k, host_id; in atp870_init() local
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()
1286 k = (atp_readb_base(atpdev, 0x3a) & 0xf3) | 0x10; in atp870_init()
1287 atp_writeb_base(atpdev, 0x3a, k); in atp870_init()
1288 atp_writeb_base(atpdev, 0x3a, k & 0xdf); in atp870_init()
1290 atp_writeb_base(atpdev, 0x3a, k); 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()
1307 unsigned char k, m, host_id; in atp880_init() local
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()
1359 for (k = 0; k < 16; k++) { in atp880_init()
1360 n = 1 << k; 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()
1370 k = atp_readb_base(atpdev, 0x38) & 0x80; in atp880_init()
1371 atp_writeb_base(atpdev, 0x38, k); 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()
1392 unsigned char k, m, c; in atp885_init() local
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()
1414 for (k = 0; k < 4; k++) { in atp885_init()
1416 ((u32 *)&setupdata[m][0])[k] = atp_readl_base(atpdev, 0x38); in atp885_init()
1418 for (k = 0; k < 4; k++) { 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()
1430 for (k = 0; k < 16; k++) { in atp885_init()
1431 n = 1 << k; 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()
1441 k = setupdata[c][1]; in atp885_init()
1442 if ((k & 0x40) != 0) in atp885_init()
1443 atpdev->global_map[c] |= 0x20; in atp885_init()
1444 k &= 0x07; 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()
1452 k = atp_readb_base(atpdev, 0x28) & 0x8f; in atp885_init()
1453 k |= 0x10; in atp885_init()
1454 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1466 k = atpdev->host_id[0]; in atp885_init()
1467 if (k > 7) in atp885_init()
1468 k = (k & 0x07) | 0x40; in atp885_init()
1469 atp_set_host_id(atpdev, 0, k); in atp885_init()
1471 k = atpdev->host_id[1]; in atp885_init()
1472 if (k > 7) in atp885_init()
1473 k = (k & 0x07) | 0x40; in atp885_init()
1474 atp_set_host_id(atpdev, 1, k); in atp885_init()
1476 msleep(600); /* this delay used to be called tscam_885() */ 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()
1483 k = atp_readb_base(atpdev, 0x28) & 0xcf; in atp885_init()
1484 k |= 0xc0; in atp885_init()
1485 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1486 k = atp_readb_base(atpdev, 0x1f) | 0x80; in atp885_init()
1487 atp_writeb_base(atpdev, 0x1f, k); in atp885_init()
1488 k = atp_readb_base(atpdev, 0x29) | 0x01; in atp885_init()
1489 atp_writeb_base(atpdev, 0x29, k); 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()
1582 it is available to be used again. Until this gets worked out, we will
1587 unsigned char j, k, c; in atp870u_abort() local
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()
1598 for (j = 0; j < 0x18; j++) { in atp870u_abort()
1599 printk(" r%2x=%2x", j, atp_readb_io(dev, c, j)); in atp870u_abort()
1602 printk(" r1f=%2x in_snd=%2x ", atp_readb_io(dev, c, 0x1f), dev->in_snd[c]); in atp870u_abort()
1605 for(j=0;j<16;j++) { 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()
1714 unsigned char i, j, k, rmb, n; in atp_is() local
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()
1753 j = i; in atp_is()
1754 if ((j & 0x08) != 0) { in atp_is()
1755 j = (j & 0x07) | 0x40; in atp_is()
1757 atp_writeb_io(dev, c, 0x15, j); 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()
1783 j = atp_readb_io(dev, c, 0x17); in atp_is()
1784 if (j != 0x16) { in atp_is()
1796 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1815 j = 0; in atp_is()
1817 k = atp_readb_io(dev, c, 0x1f); in atp_is()
1818 if ((k & 0x01) != 0) { in atp_is()
1819 mbuf[j++] = atp_readb_io(dev, c, 0x19); in atp_is()
1822 if ((k & 0x80) == 0) { in atp_is()
1825 j = atp_readb_io(dev, c, 0x17); in atp_is()
1826 if (j == 0x16) { 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()
1891 j = 0; in atp_is()
1897 atp_writeb_io(dev, c, 0x19, u3[j++]); in atp_is()
1904 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1905 if (j == 0x0f) { in atp_is()
1908 if (j == 0x0a) { in atp_is()
1911 if (j == 0x0e) { in atp_is()
1922 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1923 if (j == 0x0f) { in atp_is()
1926 if (j == 0x0a) { in atp_is()
1929 if (j == 0x0e) { in atp_is()
1936 k = 0; in atp_is()
1938 j = atp_readb_io(dev, c, 0x1f); in atp_is()
1939 if ((j & 0x01) != 0) { in atp_is()
1940 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
1943 if ((j & 0x80) == 0x00) { in atp_is()
1946 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1947 if (j == 0x0f) { in atp_is()
1950 if (j == 0x0a) { in atp_is()
1953 if (j == 0x0e) { in atp_is()
1964 j = atp_readb_io(dev, c, 0x17); in atp_is()
1965 if (j != 0x16) { in atp_is()
1966 if (j == 0x4e) { 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()
2015 j = 0; in atp_is()
2021 atp_writeb_io(dev, c, 0x19, wide[j++]); in atp_is()
2028 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2029 if (j == 0x0f) { in atp_is()
2032 if (j == 0x0a) { in atp_is()
2035 if (j == 0x0e) { in atp_is()
2046 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2047 if (j == 0x0f) { in atp_is()
2050 if (j == 0x0a) { in atp_is()
2053 if (j == 0x0e) { in atp_is()
2060 k = 0; in atp_is()
2062 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2063 if ((j & 0x01) != 0) { in atp_is()
2064 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2067 if ((j & 0x80) == 0x00) { in atp_is()
2070 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2071 if (j == 0x0f) { in atp_is()
2074 if (j == 0x0a) { in atp_is()
2077 if (j == 0x0e) { in atp_is()
2089 j = atp_readb_io(dev, c, 0x17); in atp_is()
2090 if (j != 0x16) { in atp_is()
2091 if (j == 0x4e) { 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()
2130 j = 0; in atp_is()
2131 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2132 j |= 0x01; in atp_is()
2134 atp_writeb_io(dev, c, 0x1b, j); in atp_is()
2142 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2158 j = 0; 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()
2167 atp_writeb_io(dev, c, 0x19, synuw[j++]); in atp_is()
2169 atp_writeb_io(dev, c, 0x19, synw[j++]); in atp_is()
2172 atp_writeb_io(dev, c, 0x19, synw_870[j++]); in atp_is()
2174 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2175 atp_writeb_io(dev, c, 0x19, synu[j++]); in atp_is()
2177 atp_writeb_io(dev, c, 0x19, synn[j++]); in atp_is()
2186 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2187 if (j == 0x0f) { in atp_is()
2190 if (j == 0x0a) { in atp_is()
2193 if (j == 0x0e) { in atp_is()
2204 j = atp_readb_io(dev, c, 0x17); in atp_is()
2205 if (j == 0x85) { in atp_is()
2208 j &= 0x0f; in atp_is()
2209 if (j == 0x0f) { in atp_is()
2212 if (j == 0x0a) { in atp_is()
2215 if (j == 0x0e) { in atp_is()
2225 k = 0; in atp_is()
2227 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2228 if ((j & 0x01) != 0x00) { in atp_is()
2229 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2232 if ((j & 0x80) == 0x00) { in atp_is()
2238 j = atp_readb_io(dev, c, 0x17); in atp_is()
2239 if (j == 0x85) { in atp_is()
2242 j &= 0x0f; in atp_is()
2243 if (j == 0x0f) { in atp_is()
2246 if (j == 0x0a) { in atp_is()
2249 if (j == 0x0e) { in atp_is()
2262 j = atp_readb_io(dev, c, 0x17); in atp_is()
2263 if (j != 0x16) { in atp_is()
2287 dev->id[c][i].devsp = mbuf[4]; in atp_is()
2290 j = 0xb0; in atp_is()
2294 j = 0xa0; in atp_is()
2298 j = 0x20; in atp_is()
2302 j = 0x40; in atp_is()
2306 j = 0x50; in atp_is()
2309 j = 0x60; 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()