Lines Matching refs:c
43 static void send_s870(struct atp_unit *dev,unsigned char c);
44 static void atp_is(struct atp_unit *dev, unsigned char c, bool wide_chip, unsigned char lvdmode);
121 unsigned char i, j, c, target_id, lun,cmdp; in atp870u_intr_handle() local
131 for (c = 0; c < 2; c++) { in atp870u_intr_handle()
132 j = atp_readb_io(dev, c, 0x1f); in atp870u_intr_handle()
135 dev->in_int[c] = 0; in atp870u_intr_handle()
142 dev->in_int[c] = 1; in atp870u_intr_handle()
143 cmdp = atp_readb_io(dev, c, 0x10); in atp870u_intr_handle()
144 if (dev->working[c] != 0) { in atp870u_intr_handle()
146 if ((atp_readb_io(dev, c, 0x16) & 0x80) == 0) in atp870u_intr_handle()
147 atp_writeb_io(dev, c, 0x16, (atp_readb_io(dev, c, 0x16) | 0x80)); in atp870u_intr_handle()
149 if ((atp_readb_pci(dev, c, 0x00) & 0x08) != 0) in atp870u_intr_handle()
152 if ((atp_readb_pci(dev, c, 2) & 0x08) == 0) in atp870u_intr_handle()
154 if ((atp_readb_pci(dev, c, 2) & 0x01) == 0) in atp870u_intr_handle()
158 atp_writeb_pci(dev, c, 0, 0x00); in atp870u_intr_handle()
160 i = atp_readb_io(dev, c, 0x17); in atp870u_intr_handle()
163 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
165 target_id = atp_readb_io(dev, c, 0x15); in atp870u_intr_handle()
178 if (dev->last_cmd[c] == 0xff) { in atp870u_intr_handle()
179 dev->last_cmd[c] = target_id; in atp870u_intr_handle()
181 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
184 dev->r1f[c][target_id] |= j; in atp870u_intr_handle()
189 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
190 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
194 ((unsigned char *) &adrcnt)[2] = atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
195 ((unsigned char *) &adrcnt)[1] = atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
196 ((unsigned char *) &adrcnt)[0] = atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
197 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()
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 …ast_len = %d dev->id[c][target_id].tran_len = %d\n",dev->id[c][target_id].last_len,dev->id[c][targ… in atp870u_intr_handle()
212 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
213 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
214 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != 0x01) in atp870u_intr_handle()
215 atp_writeb_io(dev, c, 0x1b, 0x01); 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()
226 send_s870(dev,c); 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()
250 ((unsigned char *) &adrcnt)[2] = atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
251 ((unsigned char *) &adrcnt)[1] = atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
252 ((unsigned char *) &adrcnt)[0] = atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
253 k = dev->id[c][target_id].last_len; 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()
257 atp_writeb_io(dev, c, 0x10, 0x41); in atp870u_intr_handle()
258 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
259 dev->in_int[c] = 0; in atp870u_intr_handle()
278 lun = atp_readb_io(dev, c, 0x1d) & 0x07; 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()
288 ((unsigned char *) &adrcnt)[2] = atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
289 ((unsigned char *) &adrcnt)[1] = atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
290 ((unsigned char *) &adrcnt)[0] = atp_readb_io(dev, c, 0x14); in atp870u_intr_handle()
291 k = dev->id[c][target_id].last_len; 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()
295 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
296 dev->in_int[c] = 0; in atp870u_intr_handle()
302 atp_writeb_io(dev, c, 0x10, 0x46); in atp870u_intr_handle()
303 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
304 atp_writeb_io(dev, c, 0x12, 0x00); in atp870u_intr_handle()
305 atp_writeb_io(dev, c, 0x13, 0x00); in atp870u_intr_handle()
306 atp_writeb_io(dev, c, 0x14, 0x00); in atp870u_intr_handle()
307 atp_writeb_io(dev, c, 0x18, 0x08); 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()
319 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
321 target_id = atp_readb_io(dev, c, 0x16); in atp870u_intr_handle()
331 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
332 workreq = dev->id[c][target_id].curr_req; in atp870u_intr_handle()
340 atp_writeb_io(dev, c, 0x0f, lun); 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 …%x k[1] 0x%x k[2] 0x%x\n", k, atp_readb_io(dev, c, 0x14), atp_readb_io(dev, c, 0x13), atp_readb_io… 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()
359 atp_writeb_io(dev, c, 0x16, 0x80); in atp870u_intr_handle()
363 i = atp_readb_pci(dev, c, 1) & 0xf3; in atp870u_intr_handle()
368 atp_writeb_pci(dev, c, 1, i); in atp870u_intr_handle()
386 if ((id & dev->wide_id[c]) != 0) { 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()
393 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
394 dev->in_int[c] = 0; in atp870u_intr_handle()
403 prd = dev->id[c][target_id].prd_pos; in atp870u_intr_handle()
416 dev->id[c][target_id].prd_pos = prd; 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()
431 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
432 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
437 if (dev->id[c][target_id].dirct != 0) { in atp870u_intr_handle()
438 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
439 atp_writeb_pci(dev, c, 0, 0x01); in atp870u_intr_handle()
440 dev->in_int[c] = 0; in atp870u_intr_handle()
446 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
447 atp_writeb_pci(dev, c, 0, 0x09); 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()
491 dev->id[c][target_id].curr_req = NULL; in atp870u_intr_handle()
492 dev->working[c]--; in atp870u_intr_handle()
497 if (dev->wide_id[c] != 0) { in atp870u_intr_handle()
498 atp_writeb_io(dev, c, 0x1b, 0x01); in atp870u_intr_handle()
499 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != 0x01) in atp870u_intr_handle()
500 atp_writeb_io(dev, c, 0x1b, 0x01); 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()
511 send_s870(dev,c); 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()
526 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
527 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
528 atp_writeb_io(dev, c, 0x10, 0x41); 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()
538 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
539 atp_writeb_pci(dev, c, 0, 0x09); 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()
545 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
546 atp_writeb_pci(dev, c, 2, 0x00); in atp870u_intr_handle()
547 atp_writeb_io(dev, c, 0x10, 0x41); 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()
554 atp_writeb_io(dev, c, 0x15, atp_readb_io(dev, c, 0x15) | 0x20); in atp870u_intr_handle()
555 dev->id[c][target_id].dirct = 0x20; in atp870u_intr_handle()
556 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
557 atp_writeb_pci(dev, c, 0, 0x01); in atp870u_intr_handle()
558 dev->in_int[c] = 0; in atp870u_intr_handle()
562 atp_writeb_io(dev, c, 0x10, 0x30); in atp870u_intr_handle()
564 atp_writeb_io(dev, c, 0x10, 0x46); in atp870u_intr_handle()
565 dev->id[c][target_id].dirct = 0x00; in atp870u_intr_handle()
566 atp_writeb_io(dev, c, 0x12, 0x00); in atp870u_intr_handle()
567 atp_writeb_io(dev, c, 0x13, 0x00); in atp870u_intr_handle()
568 atp_writeb_io(dev, c, 0x14, 0x00); in atp870u_intr_handle()
569 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
571 dev->in_int[c] = 0; in atp870u_intr_handle()
585 unsigned char c; in atp870u_queuecommand_lck() local
590 c = scmd_channel(req_p); in atp870u_queuecommand_lck()
614 if ((m & dev->active_id[c]) == 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()
649 dev->quend[c]--; in atp870u_queuecommand_lck()
654 dev->quereq[c][dev->quend[c]] = req_p; in atp870u_queuecommand_lck()
656 …%d] = %d dev->in_snd[%d] = %d\n",dev->ioport[c],atp_readb_io(dev, c, 0x1c),c,dev->in_int[c],c,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()
662 send_s870(dev,c); in atp870u_queuecommand_lck()
681 static void send_s870(struct atp_unit *dev,unsigned char c) 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()
732 if ((atp_readb_io(dev, c, 0x1f) & 0xb0) != 0 || atp_readb_io(dev, c, 0x1c) != 0) { in DEF_SCSI_QCMD()
736 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
737 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
753 dev->r1f[c][scmd_id(workreq)] = 0; in DEF_SCSI_QCMD()
772 if ((w & dev->wide_id[c]) != 0) { 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()
787 atp_writeb_io(dev, c, 0x01, 0x2c); in DEF_SCSI_QCMD()
789 atp_writeb_io(dev, c, 0x02, 0x7f); in DEF_SCSI_QCMD()
791 atp_writeb_io(dev, c, 0x02, 0xcf); 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()
807 atp_writeb_io(dev, c, 0x12, ((unsigned char *) (&l))[2]); in DEF_SCSI_QCMD()
808 atp_writeb_io(dev, c, 0x13, ((unsigned char *) (&l))[1]); in DEF_SCSI_QCMD()
809 atp_writeb_io(dev, c, 0x14, ((unsigned char *) (&l))[0]); 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()
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()
829 atp_writeb_io(dev, c, 0x16, atp_readb_io(dev, c, 0x16) | 0x80); in DEF_SCSI_QCMD()
830 atp_writeb_io(dev, c, 0x16, 0x80); in DEF_SCSI_QCMD()
831 dev->id[c][target_id].dirct = 0; in DEF_SCSI_QCMD()
833 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
837 atp_writeb_io(dev, c, 0x18, 0x08); 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()
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()
884 atp_writeb_pci(dev, c, 2, 0x06); in DEF_SCSI_QCMD()
885 atp_writeb_pci(dev, c, 2, 0x00); in DEF_SCSI_QCMD()
887 j = atp_readb_pci(dev, c, 1) & 0xf3; in DEF_SCSI_QCMD()
892 atp_writeb_pci(dev, c, 1, j); in DEF_SCSI_QCMD()
906 dev->id[c][target_id].dirct = 0x20; in DEF_SCSI_QCMD()
907 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
908 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
909 atp_writeb_pci(dev, c, 0, 0x01); in DEF_SCSI_QCMD()
914 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
916 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
919 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
920 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
921 atp_writeb_pci(dev, c, 0, 0x09); in DEF_SCSI_QCMD()
926 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
928 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
1205 int c,k; in atp870u_init_tables() local
1206 for(c=0;c < 2;c++) { in atp870u_init_tables()
1208 …atp_dev->id[c][k].prd_table = pci_alloc_consistent(atp_dev->pdev, 1024, &(atp_dev->id[c][k].prd_bu… in atp870u_init_tables()
1209 if (!atp_dev->id[c][k].prd_table) { 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()
1240 static void atp_set_host_id(struct atp_unit *atp, u8 c, u8 host_id) in atp_set_host_id() argument
1242 atp_writeb_io(atp, c, 0, host_id | 0x08); in atp_set_host_id()
1243 atp_writeb_io(atp, c, 0x18, 0); in atp_set_host_id()
1244 while ((atp_readb_io(atp, c, 0x1f) & 0x80) == 0) in atp_set_host_id()
1246 atp_readb_io(atp, c, 0x17); in atp_set_host_id()
1247 atp_writeb_io(atp, c, 1, 8); in atp_set_host_id()
1248 atp_writeb_io(atp, c, 2, 0x7f); in atp_set_host_id()
1249 atp_writeb_io(atp, c, 0x11, 0x20); in atp_set_host_id()
1392 unsigned char k, m, c; in atp885_init() local
1404 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1405 atp_writeb_base(atpdev, 0x29, c | 0x04); in atp885_init()
1425 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1426 atp_writeb_base(atpdev, 0x29, c & 0xfb); in atp885_init()
1427 for (c = 0; c < 2; c++) { 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()
1441 k = setupdata[c][1]; in atp885_init()
1443 atpdev->global_map[c] |= 0x20; in atp885_init()
1445 atpdev->global_map[c] |= k; in atp885_init()
1446 if ((setupdata[c][2] & 0x04) != 0) in atp885_init()
1447 atpdev->global_map[c] |= 0x08; in atp885_init()
1448 atpdev->host_id[c] = setupdata[c][0] & 0x07; in atp885_init()
1587 unsigned char j, k, c; in atp870u_abort() local
1594 c = scmd_channel(SCpnt); in atp870u_abort()
1595 printk(" atp870u: abort Channel = %x \n", c); 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()
1599 printk(" r%2x=%2x", j, atp_readb_io(dev, c, j)); in atp870u_abort()
1601 printk(" r1c=%2x", atp_readb_io(dev, c, 0x1c)); in atp870u_abort()
1602 printk(" r1f=%2x in_snd=%2x ", atp_readb_io(dev, c, 0x1f), dev->in_snd[c]); in atp870u_abort()
1603 printk(" d00=%2x", atp_readb_pci(dev, c, 0x00)); in atp870u_abort()
1604 printk(" d02=%2x", atp_readb_pci(dev, c, 0x02)); 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()
1612 printk(" last_lenu= %x ",(unsigned int)dev->id[c][j].last_len); in atp870u_abort()
1713 static void atp_is(struct atp_unit *dev, unsigned char c, bool wide_chip, unsigned char lvdmode) in atp_is() argument
1733 if ((m & dev->active_id[c]) != 0) { in atp_is()
1736 if (i == dev->host_id[c]) { in atp_is()
1737 printk(KERN_INFO " ID: %2d Host Adapter\n", dev->host_id[c]); in atp_is()
1740 atp_writeb_io(dev, c, 0x1b, wide_chip ? 0x01 : 0x00); in atp_is()
1741 atp_writeb_io(dev, c, 1, 0x08); in atp_is()
1742 atp_writeb_io(dev, c, 2, 0x7f); in atp_is()
1743 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1744 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
1745 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
1746 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
1747 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
1748 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
1749 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1750 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1751 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1752 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1753 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1758 atp_writeb_io(dev, c, 0x15, j); in atp_is()
1759 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1761 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1764 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1767 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1770 dev->active_id[c] |= m; in atp_is()
1772 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1774 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1776 atp_writeb_io(dev, c, 0x04, 0x00); in atp_is()
1779 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1781 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1784 j = atp_readb_io(dev, c, 0x17); in atp_is()
1786 atp_writeb_io(dev, c, 0x10, 0x41); in atp_is()
1790 atp_writeb_io(dev, c, 3, inqd[0]); in atp_is()
1791 atp_writeb_io(dev, c, 4, inqd[1]); in atp_is()
1792 atp_writeb_io(dev, c, 5, inqd[2]); in atp_is()
1793 atp_writeb_io(dev, c, 6, inqd[3]); in atp_is()
1794 atp_writeb_io(dev, c, 7, inqd[4]); in atp_is()
1795 atp_writeb_io(dev, c, 8, inqd[5]); in atp_is()
1796 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1797 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1798 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1799 atp_writeb_io(dev, c, 0x13, inqd[6]); in atp_is()
1800 atp_writeb_io(dev, c, 0x14, inqd[7]); in atp_is()
1801 atp_writeb_io(dev, c, 0x18, inqd[8]); in atp_is()
1803 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1806 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1809 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1813 atp_writeb_io(dev, c, 0x1b, 0x00); in atp_is()
1815 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1818 k = atp_readb_io(dev, c, 0x1f); in atp_is()
1820 mbuf[j++] = atp_readb_io(dev, c, 0x19); in atp_is()
1826 j = atp_readb_io(dev, c, 0x17); in atp_is()
1830 atp_writeb_io(dev, c, 0x10, 0x46); in atp_is()
1831 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1832 atp_writeb_io(dev, c, 0x13, 0); in atp_is()
1833 atp_writeb_io(dev, c, 0x14, 0); in atp_is()
1834 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1836 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1839 if (atp_readb_io(dev, c, 0x17) != 0x16) in atp_is()
1845 dev->id[c][i].devtype = mbuf[0]; in atp_is()
1854 if ((i < 8) && ((dev->global_map[c] & 0x20) == 0)) in atp_is()
1857 if ((dev->global_map[c] & 0x20) == 0) in atp_is()
1863 if (dev->sp[c][i] != 0x04) // force u2 in atp_is()
1868 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1869 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1870 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
1871 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
1872 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
1873 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
1874 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
1875 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1876 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1877 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1878 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1879 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1880 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1882 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1885 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1888 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1893 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1894 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1896 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1897 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1898 atp_writeb_io(dev, c, 0x19, u3[j++]); in atp_is()
1902 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
1905 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1917 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1918 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1919 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1920 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
1923 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1935 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1936 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1939 j = atp_readb_io(dev, c, 0x1f); in atp_is()
1941 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
1947 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1959 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1960 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1961 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1963 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00); in atp_is()
1965 j = atp_readb_io(dev, c, 0x17); in atp_is()
1984 dev->wide_id[c] |= m; in atp_is()
1985 dev->id[c][i].devsp = 0xce; in atp_is()
1987 printk("dev->id[%2d][%2d].devsp = %2x\n",c,i,dev->id[c][i].devsp); in atp_is()
1992 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1993 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1994 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
1995 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
1996 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
1997 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
1998 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
1999 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2000 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2001 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2002 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2003 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2004 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2006 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2009 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2012 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2017 atp_writeb_io(dev, c, 0x14, 0x05); in atp_is()
2018 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2020 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2021 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2022 atp_writeb_io(dev, c, 0x19, wide[j++]); in atp_is()
2026 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2029 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2041 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2042 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2043 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2044 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
2047 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2059 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2060 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2063 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2065 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2071 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2083 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2084 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2085 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2087 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2090 j = atp_readb_io(dev, c, 0x17); in atp_is()
2111 dev->wide_id[c] |= m; in atp_is()
2113 …if ((dev->id[c][i].devtype == 0x00) || (dev->id[c][i].devtype == 0x07) || ((dev->id[c][i].devtype … in atp_is()
2116 if ((dev->async[c] & m) != 0) { in atp_is()
2122 if ((!is885(dev) && !is880(dev)) || (dev->sp[c][i] == 0x02)) { in atp_is()
2126 if (dev->sp[c][i] >= 0x03) { in atp_is()
2132 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2135 atp_writeb_io(dev, c, 0x1b, j); in atp_is()
2136 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2137 atp_writeb_io(dev, c, 4, satn[1]); in atp_is()
2138 atp_writeb_io(dev, c, 5, satn[2]); in atp_is()
2139 atp_writeb_io(dev, c, 6, satn[3]); in atp_is()
2140 atp_writeb_io(dev, c, 7, satn[4]); in atp_is()
2141 atp_writeb_io(dev, c, 8, satn[5]); in atp_is()
2142 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2143 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2144 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2145 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2146 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2147 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2149 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2152 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2155 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2160 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2161 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2163 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2164 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) { in atp_is()
2165 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2167 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2168 atp_writeb_io(dev, c, 0x19, synuw[j++]); in atp_is()
2170 atp_writeb_io(dev, c, 0x19, synw[j++]); in atp_is()
2173 atp_writeb_io(dev, c, 0x19, synw_870[j++]); in atp_is()
2175 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2176 atp_writeb_io(dev, c, 0x19, synu[j++]); in atp_is()
2178 atp_writeb_io(dev, c, 0x19, synn[j++]); in atp_is()
2184 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2187 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2199 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2200 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) { in atp_is()
2201 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0x00) in atp_is()
2202 atp_writeb_io(dev, c, 0x19, 0x00); in atp_is()
2205 j = atp_readb_io(dev, c, 0x17); in atp_is()
2222 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2224 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2225 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2228 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2230 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2237 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00); in atp_is()
2239 j = atp_readb_io(dev, c, 0x17); in atp_is()
2255 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2257 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2258 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2260 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2263 j = atp_readb_io(dev, c, 0x17); in atp_is()
2288 dev->id[c][i].devsp = mbuf[4]; in atp_is()
2312 dev->id[c][i].devsp = (dev->id[c][i].devsp & 0x0f) | j; in atp_is()
2314 printk("dev->id[%2d][%2d].devsp = %2x\n",c,i,dev->id[c][i].devsp); in atp_is()