Lines Matching refs:c
44 static void send_s870(struct atp_unit *dev,unsigned char c);
45 static void atp_is(struct atp_unit *dev, unsigned char c, bool wide_chip,
123 unsigned char i, j, c, target_id, lun,cmdp; in atp870u_intr_handle() local
133 for (c = 0; c < 2; c++) { in atp870u_intr_handle()
134 j = atp_readb_io(dev, c, 0x1f); in atp870u_intr_handle()
137 dev->in_int[c] = 0; in atp870u_intr_handle()
144 dev->in_int[c] = 1; in atp870u_intr_handle()
145 cmdp = atp_readb_io(dev, c, 0x10); in atp870u_intr_handle()
146 if (dev->working[c] != 0) { in atp870u_intr_handle()
148 if ((atp_readb_io(dev, c, 0x16) & 0x80) == 0) in atp870u_intr_handle()
149 atp_writeb_io(dev, c, 0x16, in atp870u_intr_handle()
150 (atp_readb_io(dev, c, 0x16) | 0x80)); in atp870u_intr_handle()
152 if ((atp_readb_pci(dev, c, 0x00) & 0x08) != 0) in atp870u_intr_handle()
155 if ((atp_readb_pci(dev, c, 2) & 0x08) == 0) in atp870u_intr_handle()
157 if ((atp_readb_pci(dev, c, 2) & 0x01) == 0) in atp870u_intr_handle()
161 atp_writeb_pci(dev, c, 0, 0x00); in atp870u_intr_handle()
163 i = atp_readb_io(dev, c, 0x17); in atp870u_intr_handle()
166 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
168 target_id = atp_readb_io(dev, c, 0x15); in atp870u_intr_handle()
181 if (dev->last_cmd[c] == 0xff) { in atp870u_intr_handle()
182 dev->last_cmd[c] = target_id; in atp870u_intr_handle()
184 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
187 dev->r1f[c][target_id] |= j; in atp870u_intr_handle()
192 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
193 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
198 atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
200 atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
202 atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
203 if (dev->id[c][target_id].last_len != adrcnt) { in atp870u_intr_handle()
204 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
206 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
207 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
212 dev->id[c][target_id].last_len, in atp870u_intr_handle()
213 dev->id[c][target_id].tran_len); in atp870u_intr_handle()
220 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
221 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
222 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != 0x01) in atp870u_intr_handle()
223 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
229 if (((dev->quhd[c] != dev->quend[c]) || in atp870u_intr_handle()
230 (dev->last_cmd[c] != 0xff)) && in atp870u_intr_handle()
231 (dev->in_snd[c] == 0)) { in atp870u_intr_handle()
235 send_s870(dev,c); in atp870u_intr_handle()
241 dev->in_int[c] = 0; in atp870u_intr_handle()
249 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
250 dev->in_int[c] = 0; in atp870u_intr_handle()
255 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
256 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
260 atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
262 atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
264 atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
265 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
267 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
268 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
269 atp_writeb_io(dev, c, 0x10, 0x41); in atp870u_intr_handle()
270 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
271 dev->in_int[c] = 0; in atp870u_intr_handle()
289 lun = atp_readb_io(dev, c, 0x1d) & 0x07; in atp870u_intr_handle()
291 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
292 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
300 atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
302 atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
304 atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
305 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
307 dev->id[c][target_id].tran_len = k; in atp870u_intr_handle()
308 dev->id[c][target_id].last_len = adrcnt; in atp870u_intr_handle()
309 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
310 dev->in_int[c] = 0; in atp870u_intr_handle()
316 atp_writeb_io(dev, c, 0x10, 0x46); in atp870u_intr_handle()
317 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
318 atp_writeb_io(dev, c, 0x12, 0x00); in atp870u_intr_handle()
319 atp_writeb_io(dev, c, 0x13, 0x00); in atp870u_intr_handle()
320 atp_writeb_io(dev, c, 0x14, 0x00); in atp870u_intr_handle()
321 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
322 dev->in_int[c] = 0; in atp870u_intr_handle()
326 if (dev->last_cmd[c] != 0xff) { in atp870u_intr_handle()
327 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
333 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
335 target_id = atp_readb_io(dev, c, 0x16); in atp870u_intr_handle()
345 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
346 workreq = dev->id[c][target_id].curr_req; in atp870u_intr_handle()
354 atp_writeb_io(dev, c, 0x0f, lun); in atp870u_intr_handle()
355 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in atp870u_intr_handle()
356 adrcnt = dev->id[c][target_id].tran_len; in atp870u_intr_handle()
357 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
359 atp_writeb_io(dev, c, 0x12, ((unsigned char *) &k)[2]); in atp870u_intr_handle()
360 atp_writeb_io(dev, c, 0x13, ((unsigned char *) &k)[1]); in atp870u_intr_handle()
361 atp_writeb_io(dev, c, 0x14, ((unsigned char *) &k)[0]); in atp870u_intr_handle()
364 atp_readb_io(dev, c, 0x14), in atp870u_intr_handle()
365 atp_readb_io(dev, c, 0x13), in atp870u_intr_handle()
366 atp_readb_io(dev, c, 0x12)); in atp870u_intr_handle()
374 j |= dev->id[c][target_id].dirct; in atp870u_intr_handle()
375 atp_writeb_io(dev, c, 0x15, j); in atp870u_intr_handle()
376 atp_writeb_io(dev, c, 0x16, 0x80); in atp870u_intr_handle()
380 i = atp_readb_pci(dev, c, 1) & 0xf3; in atp870u_intr_handle()
388 atp_writeb_pci(dev, c, 1, i); in atp870u_intr_handle()
416 if ((id & dev->wide_id[c]) != 0) { in atp870u_intr_handle()
419 atp_writeb_io(dev, c, 0x1b, j); in atp870u_intr_handle()
420 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) in atp870u_intr_handle()
421 atp_writeb_io(dev, c, 0x1b, j); in atp870u_intr_handle()
422 if (dev->id[c][target_id].last_len == 0) { in atp870u_intr_handle()
423 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
424 dev->in_int[c] = 0; in atp870u_intr_handle()
433 prd = dev->id[c][target_id].prd_pos; in atp870u_intr_handle()
446 dev->id[c][target_id].prd_pos = prd; in atp870u_intr_handle()
449 dev->id[c][target_id].prdaddr += 0x08; in atp870u_intr_handle()
452 dev->id[c][target_id].prd_pos = prd; in atp870u_intr_handle()
456 atp_writel_pci(dev, c, 0x04, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
459 c, target_id, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
462 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
463 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
468 if (dev->id[c][target_id].dirct != 0) { in atp870u_intr_handle()
469 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
470 atp_writeb_pci(dev, c, 0, 0x01); in atp870u_intr_handle()
471 dev->in_int[c] = 0; in atp870u_intr_handle()
477 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
478 atp_writeb_pci(dev, c, 0, 0x09); in atp870u_intr_handle()
479 dev->in_int[c] = 0; in atp870u_intr_handle()
490 workreq = dev->id[c][target_id].curr_req; in atp870u_intr_handle()
493 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
494 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
497 workreq->result = atp_readb_io(dev, c, 0x0f); in atp870u_intr_handle()
498 if (((dev->r1f[c][target_id] & 0x10) != 0) && is885(dev)) { in atp870u_intr_handle()
522 dev->id[c][target_id].curr_req = NULL; in atp870u_intr_handle()
523 dev->working[c]--; in atp870u_intr_handle()
528 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
529 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
530 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != 0x01) in atp870u_intr_handle()
531 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
537 if (((dev->last_cmd[c] != 0xff) || in atp870u_intr_handle()
538 (dev->quhd[c] != dev->quend[c])) && in atp870u_intr_handle()
539 (dev->in_snd[c] == 0)) { in atp870u_intr_handle()
543 send_s870(dev,c); in atp870u_intr_handle()
546 dev->in_int[c] = 0; in atp870u_intr_handle()
549 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
550 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
557 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
558 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
559 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
560 atp_writeb_io(dev, c, 0x10, 0x41); in atp870u_intr_handle()
562 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
563 atp_writeb_io(dev, c, 0x12, in atp870u_intr_handle()
565 atp_writeb_io(dev, c, 0x13, in atp870u_intr_handle()
567 atp_writeb_io(dev, c, 0x14, in atp870u_intr_handle()
569 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
571 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
573 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
574 atp_writeb_pci(dev, c, 0, 0x09); in atp870u_intr_handle()
575 dev->in_int[c] = 0; in atp870u_intr_handle()
579 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
580 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
581 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
582 atp_writeb_io(dev, c, 0x10, 0x41); in atp870u_intr_handle()
584 k = dev->id[c][target_id].last_len; in atp870u_intr_handle()
585 atp_writeb_io(dev, c, 0x12, in atp870u_intr_handle()
587 atp_writeb_io(dev, c, 0x13, in atp870u_intr_handle()
589 atp_writeb_io(dev, c, 0x14, in atp870u_intr_handle()
592 atp_writeb_io(dev, c, 0x15, in atp870u_intr_handle()
593 atp_readb_io(dev, c, 0x15) | 0x20); in atp870u_intr_handle()
594 dev->id[c][target_id].dirct = 0x20; in atp870u_intr_handle()
595 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
596 atp_writeb_pci(dev, c, 0, 0x01); in atp870u_intr_handle()
597 dev->in_int[c] = 0; in atp870u_intr_handle()
601 atp_writeb_io(dev, c, 0x10, 0x30); in atp870u_intr_handle()
603 atp_writeb_io(dev, c, 0x10, 0x46); in atp870u_intr_handle()
604 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
605 atp_writeb_io(dev, c, 0x12, 0x00); in atp870u_intr_handle()
606 atp_writeb_io(dev, c, 0x13, 0x00); in atp870u_intr_handle()
607 atp_writeb_io(dev, c, 0x14, 0x00); in atp870u_intr_handle()
608 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
610 dev->in_int[c] = 0; in atp870u_intr_handle()
624 unsigned char c; in atp870u_queuecommand_lck() local
629 c = scmd_channel(req_p); in atp870u_queuecommand_lck()
651 if ((m & dev->active_id[c]) == 0) { in atp870u_queuecommand_lck()
660 dev->quend[c]++; in atp870u_queuecommand_lck()
661 if (dev->quend[c] >= qcnt) { in atp870u_queuecommand_lck()
662 dev->quend[c] = 0; in atp870u_queuecommand_lck()
668 if (dev->quhd[c] == dev->quend[c]) { in atp870u_queuecommand_lck()
669 if (dev->quend[c] == 0) { in atp870u_queuecommand_lck()
670 dev->quend[c] = qcnt; in atp870u_queuecommand_lck()
675 dev->quend[c]--; in atp870u_queuecommand_lck()
680 dev->quereq[c][dev->quend[c]] = req_p; in atp870u_queuecommand_lck()
684 dev->ioport[c], atp_readb_io(dev, c, 0x1c), c, in atp870u_queuecommand_lck()
685 dev->in_int[c],c,dev->in_snd[c]); in atp870u_queuecommand_lck()
687 if ((atp_readb_io(dev, c, 0x1c) == 0) && in atp870u_queuecommand_lck()
688 (dev->in_int[c] == 0) && in atp870u_queuecommand_lck()
689 (dev->in_snd[c] == 0)) { in atp870u_queuecommand_lck()
693 send_s870(dev,c); in atp870u_queuecommand_lck()
711 static void send_s870(struct atp_unit *dev, unsigned char c) in DEF_SCSI_QCMD()
721 if (dev->in_snd[c] != 0) { in DEF_SCSI_QCMD()
730 dev->in_snd[c] = 1; in DEF_SCSI_QCMD()
731 if ((dev->last_cmd[c] != 0xff) && ((dev->last_cmd[c] & 0x40) != 0)) { in DEF_SCSI_QCMD()
732 dev->last_cmd[c] &= 0x0f; in DEF_SCSI_QCMD()
733 workreq = dev->id[c][dev->last_cmd[c]].curr_req; in DEF_SCSI_QCMD()
735 dev->last_cmd[c] = 0xff; in DEF_SCSI_QCMD()
736 if (dev->quhd[c] == dev->quend[c]) { in DEF_SCSI_QCMD()
737 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
743 if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) { in DEF_SCSI_QCMD()
744 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
747 dev->working[c]++; in DEF_SCSI_QCMD()
748 j = dev->quhd[c]; in DEF_SCSI_QCMD()
749 dev->quhd[c]++; in DEF_SCSI_QCMD()
750 if (dev->quhd[c] >= qcnt) in DEF_SCSI_QCMD()
751 dev->quhd[c] = 0; in DEF_SCSI_QCMD()
752 workreq = dev->quereq[c][dev->quhd[c]]; in DEF_SCSI_QCMD()
753 if (dev->id[c][scmd_id(workreq)].curr_req != NULL) { in DEF_SCSI_QCMD()
754 dev->quhd[c] = j; in DEF_SCSI_QCMD()
755 dev->working[c]--; in DEF_SCSI_QCMD()
756 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
759 dev->id[c][scmd_id(workreq)].curr_req = workreq; in DEF_SCSI_QCMD()
760 dev->last_cmd[c] = scmd_id(workreq); in DEF_SCSI_QCMD()
762 if ((atp_readb_io(dev, c, 0x1f) & 0xb0) != 0 || in DEF_SCSI_QCMD()
763 atp_readb_io(dev, c, 0x1c) != 0) { in DEF_SCSI_QCMD()
767 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
768 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
784 dev->r1f[c][scmd_id(workreq)] = 0; in DEF_SCSI_QCMD()
803 if ((w & dev->wide_id[c]) != 0) { in DEF_SCSI_QCMD()
806 atp_writeb_io(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
807 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) { in DEF_SCSI_QCMD()
808 atp_writeb_pci(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
817 atp_writeb_io(dev, c, 0x00, workreq->cmd_len); in DEF_SCSI_QCMD()
818 atp_writeb_io(dev, c, 0x01, 0x2c); in DEF_SCSI_QCMD()
820 atp_writeb_io(dev, c, 0x02, 0x7f); in DEF_SCSI_QCMD()
822 atp_writeb_io(dev, c, 0x02, 0xcf); in DEF_SCSI_QCMD()
824 atp_writeb_io(dev, c, 0x03 + i, workreq->cmnd[i]); in DEF_SCSI_QCMD()
825 atp_writeb_io(dev, c, 0x0f, workreq->device->lun); in DEF_SCSI_QCMD()
829 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
831 printk("dev->id[%d][%d].devsp = %2x\n",c,target_id, in DEF_SCSI_QCMD()
832 dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
839 atp_writeb_io(dev, c, 0x12, ((unsigned char *) (&l))[2]); in DEF_SCSI_QCMD()
840 atp_writeb_io(dev, c, 0x13, ((unsigned char *) (&l))[1]); in DEF_SCSI_QCMD()
841 atp_writeb_io(dev, c, 0x14, ((unsigned char *) (&l))[0]); in DEF_SCSI_QCMD()
843 dev->id[c][j].last_len = l; in DEF_SCSI_QCMD()
844 dev->id[c][j].tran_len = 0; in DEF_SCSI_QCMD()
846 printk("dev->id[%2d][%2d].last_len = %d\n",c,j,dev->id[c][j].last_len); in DEF_SCSI_QCMD()
858 atp_writeb_io(dev, c, 0x15, j | 0x20); in DEF_SCSI_QCMD()
860 atp_writeb_io(dev, c, 0x15, j); in DEF_SCSI_QCMD()
861 atp_writeb_io(dev, c, 0x16, atp_readb_io(dev, c, 0x16) | 0x80); in DEF_SCSI_QCMD()
862 atp_writeb_io(dev, c, 0x16, 0x80); in DEF_SCSI_QCMD()
863 dev->id[c][target_id].dirct = 0; in DEF_SCSI_QCMD()
865 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
869 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
871 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
872 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
875 prd = dev->id[c][target_id].prd_table; in DEF_SCSI_QCMD()
876 dev->id[c][target_id].prd_pos = prd; in DEF_SCSI_QCMD()
917 dev->id[c][target_id].prdaddr,target_id); in DEF_SCSI_QCMD()
919 dev->id[c][target_id].prdaddr = dev->id[c][target_id].prd_bus; in DEF_SCSI_QCMD()
920 atp_writel_pci(dev, c, 4, dev->id[c][target_id].prdaddr); in DEF_SCSI_QCMD()
921 atp_writeb_pci(dev, c, 2, 0x06); in DEF_SCSI_QCMD()
922 atp_writeb_pci(dev, c, 2, 0x00); in DEF_SCSI_QCMD()
924 j = atp_readb_pci(dev, c, 1) & 0xf3; in DEF_SCSI_QCMD()
931 atp_writeb_pci(dev, c, 1, j); in DEF_SCSI_QCMD()
955 dev->id[c][target_id].dirct = 0x20; in DEF_SCSI_QCMD()
956 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
957 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
958 atp_writeb_pci(dev, c, 0, 0x01); in DEF_SCSI_QCMD()
963 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
965 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
968 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
969 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
970 atp_writeb_pci(dev, c, 0, 0x09); in DEF_SCSI_QCMD()
975 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
977 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
1256 int c,k; in atp870u_init_tables() local
1257 for(c=0;c < 2;c++) { in atp870u_init_tables()
1259 atp_dev->id[c][k].prd_table = in atp870u_init_tables()
1261 &(atp_dev->id[c][k].prd_bus), in atp870u_init_tables()
1263 if (!atp_dev->id[c][k].prd_table) { in atp870u_init_tables()
1268 atp_dev->id[c][k].prdaddr = atp_dev->id[c][k].prd_bus; in atp870u_init_tables()
1269 atp_dev->id[c][k].devsp=0x20; in atp870u_init_tables()
1270 atp_dev->id[c][k].devtype = 0x7f; in atp870u_init_tables()
1271 atp_dev->id[c][k].curr_req = NULL; in atp870u_init_tables()
1274 atp_dev->active_id[c] = 0; in atp870u_init_tables()
1275 atp_dev->wide_id[c] = 0; in atp870u_init_tables()
1276 atp_dev->host_id[c] = 0x07; in atp870u_init_tables()
1277 atp_dev->quhd[c] = 0; in atp870u_init_tables()
1278 atp_dev->quend[c] = 0; in atp870u_init_tables()
1279 atp_dev->last_cmd[c] = 0xff; in atp870u_init_tables()
1280 atp_dev->in_snd[c] = 0; in atp870u_init_tables()
1281 atp_dev->in_int[c] = 0; in atp870u_init_tables()
1284 atp_dev->quereq[c][k] = NULL; in atp870u_init_tables()
1287 atp_dev->id[c][k].curr_req = NULL; in atp870u_init_tables()
1288 atp_dev->sp[c][k] = 0x04; in atp870u_init_tables()
1294 static void atp_set_host_id(struct atp_unit *atp, u8 c, u8 host_id) in atp_set_host_id() argument
1296 atp_writeb_io(atp, c, 0, host_id | 0x08); in atp_set_host_id()
1297 atp_writeb_io(atp, c, 0x18, 0); in atp_set_host_id()
1298 while ((atp_readb_io(atp, c, 0x1f) & 0x80) == 0) in atp_set_host_id()
1300 atp_readb_io(atp, c, 0x17); in atp_set_host_id()
1301 atp_writeb_io(atp, c, 1, 8); in atp_set_host_id()
1302 atp_writeb_io(atp, c, 2, 0x7f); in atp_set_host_id()
1303 atp_writeb_io(atp, c, 0x11, 0x20); in atp_set_host_id()
1448 unsigned char k, m, c; in atp885_init() local
1461 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1462 atp_writeb_base(atpdev, 0x29, c | 0x04); in atp885_init()
1484 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1485 atp_writeb_base(atpdev, 0x29, c & 0xfb); in atp885_init()
1486 for (c = 0; c < 2; c++) { in atp885_init()
1487 atpdev->ultra_map[c] = 0; in atp885_init()
1488 atpdev->async[c] = 0; in atp885_init()
1491 if (atpdev->sp[c][k] > 1) in atp885_init()
1492 atpdev->ultra_map[c] |= n; in atp885_init()
1494 if (atpdev->sp[c][k] == 0) in atp885_init()
1495 atpdev->async[c] |= n; in atp885_init()
1497 atpdev->async[c] = ~(atpdev->async[c]); in atp885_init()
1499 if (atpdev->global_map[c] == 0) { in atp885_init()
1500 k = setupdata[c][1]; in atp885_init()
1502 atpdev->global_map[c] |= 0x20; in atp885_init()
1504 atpdev->global_map[c] |= k; in atp885_init()
1505 if ((setupdata[c][2] & 0x04) != 0) in atp885_init()
1506 atpdev->global_map[c] |= 0x08; in atp885_init()
1507 atpdev->host_id[c] = setupdata[c][0] & 0x07; in atp885_init()
1646 unsigned char j, k, c; in atp870u_abort() local
1653 c = scmd_channel(SCpnt); in atp870u_abort()
1654 printk(" atp870u: abort Channel = %x \n", c); in atp870u_abort()
1655 printk("working=%x last_cmd=%x ", dev->working[c], dev->last_cmd[c]); in atp870u_abort()
1656 printk(" quhdu=%x quendu=%x ", dev->quhd[c], dev->quend[c]); in atp870u_abort()
1658 printk(" r%2x=%2x", j, atp_readb_io(dev, c, j)); in atp870u_abort()
1660 printk(" r1c=%2x", atp_readb_io(dev, c, 0x1c)); in atp870u_abort()
1661 printk(" r1f=%2x in_snd=%2x ", atp_readb_io(dev, c, 0x1f), dev->in_snd[c]); in atp870u_abort()
1662 printk(" d00=%2x", atp_readb_pci(dev, c, 0x00)); in atp870u_abort()
1663 printk(" d02=%2x", atp_readb_pci(dev, c, 0x02)); in atp870u_abort()
1665 if (dev->id[c][j].curr_req != NULL) { in atp870u_abort()
1666 workrequ = dev->id[c][j].curr_req; in atp870u_abort()
1671 printk(" last_lenu= %x ",(unsigned int)dev->id[c][j].last_len); in atp870u_abort()
1770 static void atp_is(struct atp_unit *dev, unsigned char c, bool wide_chip, in atp_is() argument
1791 if ((m & dev->active_id[c]) != 0) { in atp_is()
1794 if (i == dev->host_id[c]) { in atp_is()
1795 printk(KERN_INFO " ID: %2d Host Adapter\n", dev->host_id[c]); in atp_is()
1798 atp_writeb_io(dev, c, 0x1b, wide_chip ? 0x01 : 0x00); in atp_is()
1799 atp_writeb_io(dev, c, 1, 0x08); in atp_is()
1800 atp_writeb_io(dev, c, 2, 0x7f); in atp_is()
1801 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1802 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
1803 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
1804 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
1805 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
1806 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
1807 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1808 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1809 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1810 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1811 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1816 atp_writeb_io(dev, c, 0x15, j); in atp_is()
1817 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1819 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1822 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1825 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1828 dev->active_id[c] |= m; in atp_is()
1830 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1832 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1834 atp_writeb_io(dev, c, 0x04, 0x00); in atp_is()
1837 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1839 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1842 j = atp_readb_io(dev, c, 0x17); in atp_is()
1844 atp_writeb_io(dev, c, 0x10, 0x41); in atp_is()
1848 atp_writeb_io(dev, c, 3, inqd[0]); in atp_is()
1849 atp_writeb_io(dev, c, 4, inqd[1]); in atp_is()
1850 atp_writeb_io(dev, c, 5, inqd[2]); in atp_is()
1851 atp_writeb_io(dev, c, 6, inqd[3]); in atp_is()
1852 atp_writeb_io(dev, c, 7, inqd[4]); in atp_is()
1853 atp_writeb_io(dev, c, 8, inqd[5]); in atp_is()
1854 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1855 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1856 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1857 atp_writeb_io(dev, c, 0x13, inqd[6]); in atp_is()
1858 atp_writeb_io(dev, c, 0x14, inqd[7]); in atp_is()
1859 atp_writeb_io(dev, c, 0x18, inqd[8]); in atp_is()
1861 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1864 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1867 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1871 atp_writeb_io(dev, c, 0x1b, 0x00); in atp_is()
1873 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1876 k = atp_readb_io(dev, c, 0x1f); in atp_is()
1878 mbuf[j++] = atp_readb_io(dev, c, 0x19); in atp_is()
1884 j = atp_readb_io(dev, c, 0x17); in atp_is()
1888 atp_writeb_io(dev, c, 0x10, 0x46); in atp_is()
1889 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1890 atp_writeb_io(dev, c, 0x13, 0); in atp_is()
1891 atp_writeb_io(dev, c, 0x14, 0); in atp_is()
1892 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1894 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1897 if (atp_readb_io(dev, c, 0x17) != 0x16) in atp_is()
1903 dev->id[c][i].devtype = mbuf[0]; in atp_is()
1912 if ((i < 8) && ((dev->global_map[c] & 0x20) == 0)) in atp_is()
1915 if ((dev->global_map[c] & 0x20) == 0) in atp_is()
1921 if (dev->sp[c][i] != 0x04) // force u2 in atp_is()
1926 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1927 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1928 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
1929 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
1930 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
1931 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
1932 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
1933 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1934 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1935 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1936 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1937 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1938 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1940 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1943 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1946 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1951 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1952 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1954 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1955 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1956 atp_writeb_io(dev, c, 0x19, u3[j++]); in atp_is()
1960 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
1963 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1975 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1976 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1977 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1978 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
1981 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1993 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1994 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1997 j = atp_readb_io(dev, c, 0x1f); in atp_is()
1999 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2005 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2017 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2018 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2019 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2021 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00); in atp_is()
2023 j = atp_readb_io(dev, c, 0x17); in atp_is()
2042 dev->wide_id[c] |= m; in atp_is()
2043 dev->id[c][i].devsp = 0xce; in atp_is()
2046 c, i, dev->id[c][i].devsp); in atp_is()
2051 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
2052 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2053 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
2054 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
2055 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
2056 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
2057 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
2058 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2059 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2060 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2061 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2062 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2063 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2065 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2068 if (atp_readb_io(dev, c, 0x17) != 0x11 && in atp_is()
2069 atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2072 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2077 atp_writeb_io(dev, c, 0x14, 0x05); in atp_is()
2078 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2080 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2081 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2082 atp_writeb_io(dev, c, 0x19, wide[j++]); in atp_is()
2086 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2089 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2101 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2102 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2103 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2104 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
2107 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2119 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2120 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2123 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2125 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2131 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2143 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2144 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2145 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2147 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2150 j = atp_readb_io(dev, c, 0x17); in atp_is()
2171 dev->wide_id[c] |= m; in atp_is()
2173 if ((dev->id[c][i].devtype == 0x00) || in atp_is()
2174 (dev->id[c][i].devtype == 0x07) || in atp_is()
2175 ((dev->id[c][i].devtype == 0x05) && ((n & 0x10) != 0))) { in atp_is()
2178 if ((dev->async[c] & m) != 0) { in atp_is()
2184 if ((!is885(dev) && !is880(dev)) || (dev->sp[c][i] == 0x02)) { in atp_is()
2188 if (dev->sp[c][i] >= 0x03) { in atp_is()
2194 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2197 atp_writeb_io(dev, c, 0x1b, j); in atp_is()
2198 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2199 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
2200 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
2201 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
2202 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
2203 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
2204 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2205 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2206 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2207 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2208 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2209 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2211 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2214 if (atp_readb_io(dev, c, 0x17) != 0x11 && in atp_is()
2215 atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2218 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2223 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2224 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2226 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2227 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) { in atp_is()
2228 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2230 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2231 atp_writeb_io(dev, c, 0x19, synuw[j++]); in atp_is()
2233 atp_writeb_io(dev, c, 0x19, synw[j++]); in atp_is()
2236 atp_writeb_io(dev, c, 0x19, synw_870[j++]); in atp_is()
2238 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2239 atp_writeb_io(dev, c, 0x19, synu[j++]); in atp_is()
2241 atp_writeb_io(dev, c, 0x19, synn[j++]); in atp_is()
2247 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2250 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2262 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2263 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) { in atp_is()
2264 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0x00) in atp_is()
2265 atp_writeb_io(dev, c, 0x19, 0x00); in atp_is()
2268 j = atp_readb_io(dev, c, 0x17); in atp_is()
2285 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2287 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2288 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2291 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2293 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2300 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00); in atp_is()
2302 j = atp_readb_io(dev, c, 0x17); in atp_is()
2318 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2320 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2321 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2323 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2326 j = atp_readb_io(dev, c, 0x17); in atp_is()
2351 dev->id[c][i].devsp = mbuf[4]; in atp_is()
2375 dev->id[c][i].devsp = (dev->id[c][i].devsp & 0x0f) | j; in atp_is()
2378 c,i,dev->id[c][i].devsp); in atp_is()