Lines Matching +full:0 +full:x17
133 for (c = 0; c < 2; c++) { in atp870u_intr_handle()
134 j = atp_readb_io(dev, c, 0x1f); in atp870u_intr_handle()
135 if ((j & 0x80) != 0) in atp870u_intr_handle()
137 dev->in_int[c] = 0; in atp870u_intr_handle()
139 if ((j & 0x80) == 0) 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()
154 for (k=0; k < 1000; k++) { 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()
174 if ((target_id & 0x40) != 0) { in atp870u_intr_handle()
175 target_id = (target_id & 0x07) | 0x08; in atp870u_intr_handle()
177 target_id &= 0x07; in atp870u_intr_handle()
180 if ((j & 0x40) != 0) { in atp870u_intr_handle()
181 if (dev->last_cmd[c] == 0xff) { in atp870u_intr_handle()
184 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
191 if (i == 0x85) { 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()
196 adrcnt = 0; 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()
201 ((unsigned char *) &adrcnt)[0] = in atp870u_intr_handle()
202 atp_readb_io(dev, c, 0x14); 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()
230 (dev->last_cmd[c] != 0xff)) && in atp870u_intr_handle()
231 (dev->in_snd[c] == 0)) { in atp870u_intr_handle()
241 dev->in_int[c] = 0; in atp870u_intr_handle()
243 printk("Status 0x85 return\n"); in atp870u_intr_handle()
248 if (i == 0x40) { in atp870u_intr_handle()
249 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
250 dev->in_int[c] = 0; in atp870u_intr_handle()
254 if (i == 0x21) { 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()
258 adrcnt = 0; 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()
263 ((unsigned char *) &adrcnt)[0] = in atp870u_intr_handle()
264 atp_readb_io(dev, c, 0x14); 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()
276 if ((i == 0x4c) || (i == 0x4d) || (i == 0x8c) || (i == 0x8d)) { in atp870u_intr_handle()
277 if ((i == 0x4c) || (i == 0x8c)) in atp870u_intr_handle()
278 i=0x48; in atp870u_intr_handle()
280 i=0x49; in atp870u_intr_handle()
283 if ((i == 0x80) || (i == 0x8f)) { in atp870u_intr_handle()
287 lun = 0; in atp870u_intr_handle()
288 if (cmdp == 0x44 || i == 0x80) 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()
294 if (cmdp == 0x41) { in atp870u_intr_handle()
296 printk("cmdp = 0x41\n"); in atp870u_intr_handle()
298 adrcnt = 0; 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()
303 ((unsigned char *) &adrcnt)[0] = in atp870u_intr_handle()
304 atp_readb_io(dev, c, 0x14); 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()
314 printk("cmdp != 0x41\n"); 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()
330 j = atp_readb_base(dev, 0x29) & 0xfe; in atp870u_intr_handle()
331 atp_writeb_base(dev, 0x29, j); 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()
339 if ((target_id & 0x10) != 0) { in atp870u_intr_handle()
340 target_id = (target_id & 0x07) | 0x08; in atp870u_intr_handle()
342 target_id &= 0x07; in atp870u_intr_handle()
345 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
349 for (l = 0; l < workreq->cmd_len; l++) 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()
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()
363 printk("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n", k, 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()
371 j = (j & 0x07) | 0x40; 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()
381 //j=workreq->cmnd[0]; in atp870u_intr_handle()
382 if ((workreq->cmnd[0] == READ_6) || in atp870u_intr_handle()
383 (workreq->cmnd[0] == READ_10) || in atp870u_intr_handle()
384 (workreq->cmnd[0] == WRITE_6) || in atp870u_intr_handle()
385 (workreq->cmnd[0] == WRITE_10)) { in atp870u_intr_handle()
386 i |= 0x0c; in atp870u_intr_handle()
390 if ((workreq->cmnd[0] == READ_6) || in atp870u_intr_handle()
391 (workreq->cmnd[0] == READ_10) || in atp870u_intr_handle()
392 (workreq->cmnd[0] == WRITE_6) || in atp870u_intr_handle()
393 (workreq->cmnd[0] == WRITE_10)) in atp870u_intr_handle()
394 atp_writeb_base(dev, 0x3b, in atp870u_intr_handle()
395 (atp_readb_base(dev, 0x3b) & 0x3f) | 0xc0); in atp870u_intr_handle()
397 atp_writeb_base(dev, 0x3b, in atp870u_intr_handle()
398 atp_readb_base(dev, 0x3b) & 0x3f); in atp870u_intr_handle()
400 if ((workreq->cmnd[0] == READ_6) || in atp870u_intr_handle()
401 (workreq->cmnd[0] == READ_10) || in atp870u_intr_handle()
402 (workreq->cmnd[0] == WRITE_6) || in atp870u_intr_handle()
403 (workreq->cmnd[0] == WRITE_10)) in atp870u_intr_handle()
404 atp_writeb_base(dev, 0x3a, in atp870u_intr_handle()
405 (atp_readb_base(dev, 0x3a) & 0xf3) | 0x08); in atp870u_intr_handle()
407 atp_writeb_base(dev, 0x3a, in atp870u_intr_handle()
408 atp_readb_base(dev, 0x3a) & 0xf3); in atp870u_intr_handle()
410 j = 0; in atp870u_intr_handle()
416 if ((id & dev->wide_id[c]) != 0) { in atp870u_intr_handle()
417 j |= 0x01; 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()
426 printk("dev->id[c][target_id].last_len = 0\n"); in atp870u_intr_handle()
434 while (adrcnt != 0) { in atp870u_intr_handle()
436 if (id == 0) { in atp870u_intr_handle()
437 k = 0x10000; in atp870u_intr_handle()
444 ((unsigned long *)prd)[0] += adrcnt; in atp870u_intr_handle()
445 adrcnt = 0; in atp870u_intr_handle()
449 dev->id[c][target_id].prdaddr += 0x08; in atp870u_intr_handle()
450 prd += 0x08; in atp870u_intr_handle()
451 if (adrcnt == 0) { in atp870u_intr_handle()
456 atp_writel_pci(dev, c, 0x04, dev->id[c][target_id].prdaddr); in atp870u_intr_handle()
458 printk("dev->id[%d][%d].prdaddr 0x%8x\n", 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()
473 printk("status 0x80 return dirct != 0\n"); 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()
481 printk("status 0x80 return dirct = 0\n"); in atp870u_intr_handle()
492 if (i == 0x42 || i == 0x16) { 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()
496 if (i == 0x16) { 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()
506 j = atp_readb_base(dev, 0x29) | 0x01; in atp870u_intr_handle()
507 atp_writeb_base(dev, 0x29, j); 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()
539 (dev->in_snd[c] == 0)) { 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()
552 if (i == 0x4f) { in atp870u_intr_handle()
553 i = 0x89; in atp870u_intr_handle()
555 i &= 0x0f; in atp870u_intr_handle()
556 if (i == 0x09) { 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()
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()
568 ((unsigned char *) (&k))[0]); 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()
578 if (i == 0x08) { 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()
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()
590 ((unsigned char *) (&k))[0]); 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()
600 if (i == 0x0a) 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()
629 req_p->sense_buffer[0]=0; in atp870u_queuecommand_lck()
630 scsi_set_resid(req_p, 0); in atp870u_queuecommand_lck()
637 return 0; in atp870u_queuecommand_lck()
650 if ((m & dev->active_id[c]) == 0) { in atp870u_queuecommand_lck()
653 return 0; in atp870u_queuecommand_lck()
661 dev->quend[c] = 0; in atp870u_queuecommand_lck()
668 if (dev->quend[c] == 0) { in atp870u_queuecommand_lck()
677 return 0; in atp870u_queuecommand_lck()
681 printk("dev->ioport[c] = %x atp_readb_io(dev, c, 0x1c) = %x " in atp870u_queuecommand_lck()
683 dev->ioport[c], atp_readb_io(dev, c, 0x1c), c, in atp870u_queuecommand_lck()
686 if ((atp_readb_io(dev, c, 0x1c) == 0) && in atp870u_queuecommand_lck()
687 (dev->in_int[c] == 0) && in atp870u_queuecommand_lck()
688 (dev->in_snd[c] == 0)) { in atp870u_queuecommand_lck()
697 return 0; in atp870u_queuecommand_lck()
717 unsigned long l, bttl = 0; in DEF_SCSI_QCMD()
720 if (dev->in_snd[c] != 0) { in DEF_SCSI_QCMD()
730 if ((dev->last_cmd[c] != 0xff) && ((dev->last_cmd[c] & 0x40) != 0)) { in DEF_SCSI_QCMD()
731 dev->last_cmd[c] &= 0x0f; in DEF_SCSI_QCMD()
734 dev->last_cmd[c] = 0xff; in DEF_SCSI_QCMD()
736 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
742 if ((dev->last_cmd[c] != 0xff) && (dev->working[c] != 0)) { in DEF_SCSI_QCMD()
743 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
750 dev->quhd[c] = 0; in DEF_SCSI_QCMD()
755 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
761 if ((atp_readb_io(dev, c, 0x1f) & 0xb0) != 0 || in DEF_SCSI_QCMD()
762 atp_readb_io(dev, c, 0x1c) != 0) { in DEF_SCSI_QCMD()
766 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
767 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
773 for(i=0;i<workreq->cmd_len;i++) { in DEF_SCSI_QCMD()
781 j = atp_readb_base(dev, 0x29) & 0xfe; in DEF_SCSI_QCMD()
782 atp_writeb_base(dev, 0x29, j); in DEF_SCSI_QCMD()
783 dev->r1f[c][scmd_id(workreq)] = 0; in DEF_SCSI_QCMD()
786 if (workreq->cmnd[0] == READ_CAPACITY) { in DEF_SCSI_QCMD()
790 if (workreq->cmnd[0] == TEST_UNIT_READY) { in DEF_SCSI_QCMD()
791 l = 0; in DEF_SCSI_QCMD()
794 j = 0; in DEF_SCSI_QCMD()
802 if ((w & dev->wide_id[c]) != 0) { in DEF_SCSI_QCMD()
803 j |= 0x01; in DEF_SCSI_QCMD()
805 atp_writeb_io(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
806 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) { in DEF_SCSI_QCMD()
807 atp_writeb_pci(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
816 atp_writeb_io(dev, c, 0x00, workreq->cmd_len); in DEF_SCSI_QCMD()
817 atp_writeb_io(dev, c, 0x01, 0x2c); in DEF_SCSI_QCMD()
819 atp_writeb_io(dev, c, 0x02, 0x7f); in DEF_SCSI_QCMD()
821 atp_writeb_io(dev, c, 0x02, 0xcf); in DEF_SCSI_QCMD()
822 for (i = 0; i < workreq->cmd_len; i++) in DEF_SCSI_QCMD()
823 atp_writeb_io(dev, c, 0x03 + i, workreq->cmnd[i]); in DEF_SCSI_QCMD()
824 atp_writeb_io(dev, c, 0x0f, workreq->device->lun); in DEF_SCSI_QCMD()
828 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
838 atp_writeb_io(dev, c, 0x12, ((unsigned char *) (&l))[2]); in DEF_SCSI_QCMD()
839 atp_writeb_io(dev, c, 0x13, ((unsigned char *) (&l))[1]); in DEF_SCSI_QCMD()
840 atp_writeb_io(dev, c, 0x14, ((unsigned char *) (&l))[0]); in DEF_SCSI_QCMD()
843 dev->id[c][j].tran_len = 0; in DEF_SCSI_QCMD()
850 if ((j & 0x08) != 0) { in DEF_SCSI_QCMD()
851 j = (j & 0x07) | 0x40; in DEF_SCSI_QCMD()
857 atp_writeb_io(dev, c, 0x15, j | 0x20); in DEF_SCSI_QCMD()
859 atp_writeb_io(dev, c, 0x15, j); in DEF_SCSI_QCMD()
860 atp_writeb_io(dev, c, 0x16, atp_readb_io(dev, c, 0x16) | 0x80); in DEF_SCSI_QCMD()
861 atp_writeb_io(dev, c, 0x16, 0x80); in DEF_SCSI_QCMD()
862 dev->id[c][target_id].dirct = 0; in DEF_SCSI_QCMD()
863 if (l == 0) { in DEF_SCSI_QCMD()
864 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
866 printk("change SCSI_CMD_REG 0x08\n"); in DEF_SCSI_QCMD()
868 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
870 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
871 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
884 i = 0; in DEF_SCSI_QCMD()
891 while (l > 0x10000) { in DEF_SCSI_QCMD()
892 (((u16 *) (prd))[i + 3]) = 0x0000; in DEF_SCSI_QCMD()
893 (((u16 *) (prd))[i + 2]) = 0x0000; in DEF_SCSI_QCMD()
895 l -= 0x10000; in DEF_SCSI_QCMD()
896 bttl += 0x10000; in DEF_SCSI_QCMD()
897 i += 0x04; in DEF_SCSI_QCMD()
901 (((u16 *) (prd))[i + 3]) = 0; in DEF_SCSI_QCMD()
902 i += 0x04; in DEF_SCSI_QCMD()
904 (((u16 *) (prd))[i - 1]) = cpu_to_le16(0x8000); in DEF_SCSI_QCMD()
907 (((unsigned short int *)prd)[0]), in DEF_SCSI_QCMD()
915 printk("send_s870: prdaddr_2 0x%8x target_id %d\n", in DEF_SCSI_QCMD()
920 atp_writeb_pci(dev, c, 2, 0x06); in DEF_SCSI_QCMD()
921 atp_writeb_pci(dev, c, 2, 0x00); in DEF_SCSI_QCMD()
923 j = atp_readb_pci(dev, c, 1) & 0xf3; in DEF_SCSI_QCMD()
924 if ((workreq->cmnd[0] == READ_6) || in DEF_SCSI_QCMD()
925 (workreq->cmnd[0] == READ_10) || in DEF_SCSI_QCMD()
926 (workreq->cmnd[0] == WRITE_6) || in DEF_SCSI_QCMD()
927 (workreq->cmnd[0] == WRITE_10)) { in DEF_SCSI_QCMD()
928 j |= 0x0c; in DEF_SCSI_QCMD()
932 if ((workreq->cmnd[0] == READ_6) || in DEF_SCSI_QCMD()
933 (workreq->cmnd[0] == READ_10) || in DEF_SCSI_QCMD()
934 (workreq->cmnd[0] == WRITE_6) || in DEF_SCSI_QCMD()
935 (workreq->cmnd[0] == WRITE_10)) in DEF_SCSI_QCMD()
936 atp_writeb_base(dev, 0x3b, in DEF_SCSI_QCMD()
937 (atp_readb_base(dev, 0x3b) & 0x3f) | 0xc0); in DEF_SCSI_QCMD()
939 atp_writeb_base(dev, 0x3b, in DEF_SCSI_QCMD()
940 atp_readb_base(dev, 0x3b) & 0x3f); in DEF_SCSI_QCMD()
942 if ((workreq->cmnd[0] == READ_6) || in DEF_SCSI_QCMD()
943 (workreq->cmnd[0] == READ_10) || in DEF_SCSI_QCMD()
944 (workreq->cmnd[0] == WRITE_6) || in DEF_SCSI_QCMD()
945 (workreq->cmnd[0] == WRITE_10)) in DEF_SCSI_QCMD()
946 atp_writeb_base(dev, 0x3a, in DEF_SCSI_QCMD()
947 (atp_readb_base(dev, 0x3a) & 0xf3) | 0x08); in DEF_SCSI_QCMD()
949 atp_writeb_base(dev, 0x3a, in DEF_SCSI_QCMD()
950 atp_readb_base(dev, 0x3a) & 0xf3); in DEF_SCSI_QCMD()
954 dev->id[c][target_id].dirct = 0x20; in DEF_SCSI_QCMD()
955 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
956 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
957 atp_writeb_pci(dev, c, 0, 0x01); in DEF_SCSI_QCMD()
962 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
964 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
967 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
968 atp_writeb_io(dev, c, 0x18, 0x08); in DEF_SCSI_QCMD()
969 atp_writeb_pci(dev, c, 0, 0x09); in DEF_SCSI_QCMD()
974 dev->last_cmd[c] |= 0x40; in DEF_SCSI_QCMD()
976 dev->in_snd[c] = 0; in DEF_SCSI_QCMD()
986 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
987 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
988 k = atp_readw_io(dev, 0, 0x1c); in fun_scam()
990 if ((k & 0x8000) != 0) /* DB7 all release? */ in fun_scam()
991 i = 0; in fun_scam()
993 *val |= 0x4000; /* assert DB6 */ in fun_scam()
994 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
995 *val &= 0xdfff; /* assert DB5 */ in fun_scam()
996 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
997 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
998 if ((atp_readw_io(dev, 0, 0x1c) & 0x2000) != 0) /* DB5 all release? */ in fun_scam()
999 i = 0; in fun_scam()
1001 *val |= 0x8000; /* no DB4-0, assert DB7 */ in fun_scam()
1002 *val &= 0xe0ff; in fun_scam()
1003 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
1004 *val &= 0xbfff; /* release DB6 */ in fun_scam()
1005 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
1006 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
1007 if ((atp_readw_io(dev, 0, 0x1c) & 0x4000) != 0) /* DB6 all release? */ in fun_scam()
1008 i = 0; in fun_scam()
1023 0x38, 0x31, 0x32, 0x2b, 0x34, 0x2d, 0x2e, 0x27 in tscam()
1028 for (i = 0; i < 0x10; i++) { in tscam()
1029 udelay(0xffff); in tscam()
1033 atp_writeb_io(dev, 0, 1, 0x08); in tscam()
1034 atp_writeb_io(dev, 0, 2, 0x7f); in tscam()
1035 atp_writeb_io(dev, 0, 0x11, 0x20); in tscam()
1037 if ((scam_on & 0x40) == 0) { in tscam()
1041 m <<= dev->host_id[0]; in tscam()
1044 m |= 0xff00; in tscam()
1048 atp_writeb_io(dev, 0, 0x02, 0x02); /* 2*2=4ms,3EH 2/32*3E=3.9ms */ in tscam()
1049 atp_writeb_io(dev, 0, 0x03, 0); in tscam()
1050 atp_writeb_io(dev, 0, 0x04, 0); in tscam()
1051 atp_writeb_io(dev, 0, 0x05, 0); in tscam()
1052 atp_writeb_io(dev, 0, 0x06, 0); in tscam()
1053 atp_writeb_io(dev, 0, 0x07, 0); in tscam()
1054 atp_writeb_io(dev, 0, 0x08, 0); in tscam()
1056 for (i = 0; i < j; i++) { in tscam()
1059 if ((m & assignid_map) != 0) { in tscam()
1062 atp_writeb_io(dev, 0, 0x0f, 0); in tscam()
1063 atp_writeb_io(dev, 0, 0x12, 0); in tscam()
1064 atp_writeb_io(dev, 0, 0x13, 0); in tscam()
1065 atp_writeb_io(dev, 0, 0x14, 0); in tscam()
1067 k = (i & 0x07) | 0x40; in tscam()
1071 atp_writeb_io(dev, 0, 0x15, k); in tscam()
1073 atp_writeb_io(dev, 0, 0x1b, 0x01); in tscam()
1075 atp_writeb_io(dev, 0, 0x1b, 0x00); in tscam()
1077 atp_writeb_io(dev, 0, 0x18, 0x09); in tscam()
1079 while ((atp_readb_io(dev, 0, 0x1f) & 0x80) == 0x00) in tscam()
1081 k = atp_readb_io(dev, 0, 0x17); in tscam()
1082 if ((k == 0x85) || (k == 0x42)) in tscam()
1084 if (k != 0x16) in tscam()
1085 atp_writeb_io(dev, 0, 0x10, 0x41); in tscam()
1086 } while (k != 0x16); in tscam()
1087 if ((k == 0x85) || (k == 0x42)) in tscam()
1092 atp_writeb_io(dev, 0, 0x02, 0x7f); in tscam()
1093 atp_writeb_io(dev, 0, 0x1b, 0x02); in tscam()
1097 val = 0x0080; /* bsy */ in tscam()
1098 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1099 val |= 0x0040; /* sel */ in tscam()
1100 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1101 val |= 0x0004; /* msg */ in tscam()
1102 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1104 val &= 0x007f; /* no bsy */ in tscam()
1105 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1107 val &= 0x00fb; /* after 1ms no msg */ in tscam()
1108 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1109 while ((atp_readb_io(dev, 0, 0x1c) & 0x04) != 0) in tscam()
1113 for (n = 0; n < 0x30000; n++) in tscam()
1114 if ((atp_readb_io(dev, 0, 0x1c) & 0x80) != 0) /* bsy ? */ in tscam()
1116 if (n < 0x30000) in tscam()
1117 for (n = 0; n < 0x30000; n++) in tscam()
1118 if ((atp_readb_io(dev, 0, 0x1c) & 0x81) == 0x0081) { in tscam()
1120 val |= 0x8003; /* io,cd,db7 */ in tscam()
1121 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1123 val &= 0x00bf; /* no sel */ in tscam()
1124 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1139 if ((atp_readb_io(dev, 0, 0x1c) & 0x80) == 0x00) { /* bsy ? */ in tscam()
1140 atp_writew_io(dev, 0, 0x1c, 0); in tscam()
1141 atp_writeb_io(dev, 0, 0x1b, 0); in tscam()
1142 atp_writeb_io(dev, 0, 0x15, 0); in tscam()
1143 atp_writeb_io(dev, 0, 0x18, 0x09); in tscam()
1144 while ((atp_readb_io(dev, 0, 0x1f) & 0x80) == 0) in tscam()
1146 atp_readb_io(dev, 0, 0x17); in tscam()
1149 val &= 0x00ff; /* synchronization */ in tscam()
1150 val |= 0x3f00; in tscam()
1153 val &= 0x00ff; /* isolation */ in tscam()
1154 val |= 0x2000; in tscam()
1158 j = 0; in tscam()
1161 if ((atp_readw_io(dev, 0, 0x1c) & 0x2000) == 0) in tscam()
1164 val &= 0x00ff; /* get ID_STRING */ in tscam()
1165 val |= 0x2000; in tscam()
1167 if ((k & 0x03) == 0) in tscam()
1169 mbuf[j] <<= 0x01; in tscam()
1170 mbuf[j] &= 0xfe; in tscam()
1171 if ((k & 0x02) != 0) in tscam()
1172 mbuf[j] |= 0x01; in tscam()
1174 if (i > 0) in tscam()
1181 /* mbuf[32]=0; in tscam()
1182 printk(" \n%x %x %x %s\n ",assignid_map,mbuf[0],mbuf[1],&mbuf[2]); */ in tscam()
1184 j = mbuf[0]; in tscam()
1185 if ((j & 0x20) != 0) { /* bit5=1:ID up to 7 */ in tscam()
1188 if ((j & 0x06) != 0) { /* IDvalid? */ in tscam()
1193 if ((m & assignid_map) == 0) in tscam()
1195 if (k > 0) in tscam()
1201 if ((m & assignid_map) != 0) { /* srch from max acceptable ID# */ in tscam()
1206 if ((m & assignid_map) == 0) in tscam()
1208 if (k > 0) in tscam()
1217 quintet[0] = 0x38; /* 1st dft ID<8 */ in tscam()
1219 quintet[0] = 0x31; /* 1st ID>=8 */ in tscam()
1221 k &= 0x07; in tscam()
1224 val &= 0x00ff; /* AssignID 1stQuintet,AH=001xxxxx */ in tscam()
1225 m = quintet[0] << 8; in tscam()
1228 val &= 0x00ff; /* AssignID 2ndQuintet,AH=001xxxxx */ in tscam()
1240 for (j=0; j < 2; j++) { in atp870u_free_tables()
1241 for (k = 0; k < 16; k++) { in atp870u_free_tables()
1256 for(c=0;c < 2;c++) { in atp870u_init_tables()
1257 for(k=0;k<16;k++) { in atp870u_init_tables()
1268 atp_dev->id[c][k].devsp=0x20; in atp870u_init_tables()
1269 atp_dev->id[c][k].devtype = 0x7f; in atp870u_init_tables()
1273 atp_dev->active_id[c] = 0; in atp870u_init_tables()
1274 atp_dev->wide_id[c] = 0; in atp870u_init_tables()
1275 atp_dev->host_id[c] = 0x07; in atp870u_init_tables()
1276 atp_dev->quhd[c] = 0; in atp870u_init_tables()
1277 atp_dev->quend[c] = 0; in atp870u_init_tables()
1278 atp_dev->last_cmd[c] = 0xff; in atp870u_init_tables()
1279 atp_dev->in_snd[c] = 0; in atp870u_init_tables()
1280 atp_dev->in_int[c] = 0; in atp870u_init_tables()
1282 for (k = 0; k < qcnt; k++) { in atp870u_init_tables()
1285 for (k = 0; k < 16; k++) { in atp870u_init_tables()
1287 atp_dev->sp[c][k] = 0x04; in atp870u_init_tables()
1290 return 0; in atp870u_init_tables()
1295 atp_writeb_io(atp, c, 0, host_id | 0x08); in atp_set_host_id()
1296 atp_writeb_io(atp, c, 0x18, 0); in atp_set_host_id()
1297 while ((atp_readb_io(atp, c, 0x1f) & 0x80) == 0) in atp_set_host_id()
1299 atp_readb_io(atp, c, 0x17); in atp_set_host_id()
1301 atp_writeb_io(atp, c, 2, 0x7f); in atp_set_host_id()
1302 atp_writeb_io(atp, c, 0x11, 0x20); in atp_set_host_id()
1317 pci_read_config_byte(pdev, 0x49, &host_id); in atp870_init()
1323 atpdev->ioport[0] = shpnt->io_port; in atp870_init()
1324 atpdev->pciport[0] = shpnt->io_port + 0x20; in atp870_init()
1325 host_id &= 0x07; in atp870_init()
1326 atpdev->host_id[0] = host_id; in atp870_init()
1327 scam_on = atp_readb_pci(atpdev, 0, 2); in atp870_init()
1328 atpdev->global_map[0] = atp_readb_base(atpdev, 0x2d); in atp870_init()
1329 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x2e); in atp870_init()
1331 if (atpdev->ultra_map[0] == 0) { in atp870_init()
1332 scam_on = 0x00; in atp870_init()
1333 atpdev->global_map[0] = 0x20; in atp870_init()
1334 atpdev->ultra_map[0] = 0xffff; in atp870_init()
1337 if (pdev->revision > 0x07) /* check if atp876 chip */ in atp870_init()
1338 atp_writeb_base(atpdev, 0x3e, 0x00); /* enable terminator */ in atp870_init()
1340 k = (atp_readb_base(atpdev, 0x3a) & 0xf3) | 0x10; in atp870_init()
1341 atp_writeb_base(atpdev, 0x3a, k); in atp870_init()
1342 atp_writeb_base(atpdev, 0x3a, k & 0xdf); in atp870_init()
1344 atp_writeb_base(atpdev, 0x3a, k); in atp870_init()
1346 atp_set_host_id(atpdev, 0, host_id); in atp870_init()
1349 atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) | 0x10); in atp870_init()
1350 atp_is(atpdev, 0, wide_chip, 0); in atp870_init()
1351 atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) & 0xef); in atp870_init()
1352 atp_writeb_base(atpdev, 0x3b, atp_readb_base(atpdev, 0x3b) | 0x20); in atp870_init()
1364 pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80); in atp880_init()
1366 atpdev->ioport[0] = shpnt->io_port + 0x40; in atp880_init()
1367 atpdev->pciport[0] = shpnt->io_port + 0x28; in atp880_init()
1369 host_id = atp_readb_base(atpdev, 0x39) >> 4; in atp880_init()
1374 atpdev->host_id[0] = host_id; in atp880_init()
1376 atpdev->global_map[0] = atp_readb_base(atpdev, 0x35); in atp880_init()
1377 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x3c); in atp880_init()
1379 n = 0x3f09; in atp880_init()
1380 while (n < 0x4000) { in atp880_init()
1381 m = 0; in atp880_init()
1382 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1383 n += 0x0002; in atp880_init()
1384 if (atp_readb_base(atpdev, 0x30) == 0xff) in atp880_init()
1387 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1388 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1389 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1390 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1391 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1392 n += 0x0002; in atp880_init()
1393 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1394 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1395 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1396 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1397 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1398 n += 0x0002; in atp880_init()
1399 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1400 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1401 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1402 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1403 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1404 n += 0x0002; in atp880_init()
1405 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1406 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1407 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1408 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1409 n += 0x0018; in atp880_init()
1411 atp_writew_base(atpdev, 0x34, 0); in atp880_init()
1412 atpdev->ultra_map[0] = 0; in atp880_init()
1413 atpdev->async[0] = 0; in atp880_init()
1414 for (k = 0; k < 16; k++) { in atp880_init()
1416 if (atpdev->sp[0][k] > 1) in atp880_init()
1417 atpdev->ultra_map[0] |= n; in atp880_init()
1419 if (atpdev->sp[0][k] == 0) in atp880_init()
1420 atpdev->async[0] |= n; in atp880_init()
1422 atpdev->async[0] = ~(atpdev->async[0]); in atp880_init()
1423 atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]); in atp880_init()
1425 k = atp_readb_base(atpdev, 0x38) & 0x80; in atp880_init()
1426 atp_writeb_base(atpdev, 0x38, k); in atp880_init()
1427 atp_writeb_base(atpdev, 0x3b, 0x20); in atp880_init()
1429 atp_writeb_base(atpdev, 0x3b, 0); in atp880_init()
1431 atp_readb_io(atpdev, 0, 0x1b); in atp880_init()
1432 atp_readb_io(atpdev, 0, 0x17); in atp880_init()
1434 atp_set_host_id(atpdev, 0, host_id); in atp880_init()
1436 tscam(shpnt, true, atp_readb_base(atpdev, 0x22)); in atp880_init()
1437 atp_is(atpdev, 0, true, atp_readb_base(atpdev, 0x3f) & 0x40); in atp880_init()
1438 atp_writeb_base(atpdev, 0x38, 0xb0); in atp880_init()
1455 atpdev->ioport[0] = shpnt->io_port + 0x80; in atp885_init()
1456 atpdev->ioport[1] = shpnt->io_port + 0xc0; in atp885_init()
1457 atpdev->pciport[0] = shpnt->io_port + 0x40; in atp885_init()
1458 atpdev->pciport[1] = shpnt->io_port + 0x50; in atp885_init()
1460 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1461 atp_writeb_base(atpdev, 0x29, c | 0x04); in atp885_init()
1463 n = 0x1f80; in atp885_init()
1464 while (n < 0x2000) { in atp885_init()
1465 atp_writew_base(atpdev, 0x3c, n); in atp885_init()
1466 if (atp_readl_base(atpdev, 0x38) == 0xffffffff) in atp885_init()
1468 for (m = 0; m < 2; m++) { in atp885_init()
1469 atpdev->global_map[m] = 0; in atp885_init()
1470 for (k = 0; k < 4; k++) { in atp885_init()
1471 atp_writew_base(atpdev, 0x3c, n++); in atp885_init()
1472 ((u32 *)&setupdata[m][0])[k] = in atp885_init()
1473 atp_readl_base(atpdev, 0x38); in atp885_init()
1475 for (k = 0; k < 4; k++) { in atp885_init()
1476 atp_writew_base(atpdev, 0x3c, n++); in atp885_init()
1477 ((u32 *)&atpdev->sp[m][0])[k] = in atp885_init()
1478 atp_readl_base(atpdev, 0x38); in atp885_init()
1483 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1484 atp_writeb_base(atpdev, 0x29, c & 0xfb); in atp885_init()
1485 for (c = 0; c < 2; c++) { in atp885_init()
1486 atpdev->ultra_map[c] = 0; in atp885_init()
1487 atpdev->async[c] = 0; in atp885_init()
1488 for (k = 0; k < 16; k++) { in atp885_init()
1493 if (atpdev->sp[c][k] == 0) in atp885_init()
1498 if (atpdev->global_map[c] == 0) { in atp885_init()
1500 if ((k & 0x40) != 0) in atp885_init()
1501 atpdev->global_map[c] |= 0x20; in atp885_init()
1502 k &= 0x07; in atp885_init()
1504 if ((setupdata[c][2] & 0x04) != 0) in atp885_init()
1505 atpdev->global_map[c] |= 0x08; in atp885_init()
1506 atpdev->host_id[c] = setupdata[c][0] & 0x07; in atp885_init()
1510 k = atp_readb_base(atpdev, 0x28) & 0x8f; in atp885_init()
1511 k |= 0x10; in atp885_init()
1512 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1513 atp_writeb_pci(atpdev, 0, 1, 0x80); in atp885_init()
1514 atp_writeb_pci(atpdev, 1, 1, 0x80); in atp885_init()
1516 atp_writeb_pci(atpdev, 0, 1, 0); in atp885_init()
1517 atp_writeb_pci(atpdev, 1, 1, 0); in atp885_init()
1519 atp_readb_io(atpdev, 0, 0x1b); in atp885_init()
1520 atp_readb_io(atpdev, 0, 0x17); in atp885_init()
1521 atp_readb_io(atpdev, 1, 0x1b); in atp885_init()
1522 atp_readb_io(atpdev, 1, 0x17); in atp885_init()
1524 k = atpdev->host_id[0]; in atp885_init()
1526 k = (k & 0x07) | 0x40; in atp885_init()
1527 atp_set_host_id(atpdev, 0, k); in atp885_init()
1531 k = (k & 0x07) | 0x40; in atp885_init()
1536 atp_is(atpdev, 0, true, atp_readb_io(atpdev, 0, 0x1b) >> 7); in atp885_init()
1537 atp_writeb_io(atpdev, 0, 0x16, 0x80); in atp885_init()
1539 atp_is(atpdev, 1, true, atp_readb_io(atpdev, 1, 0x1b) >> 7); in atp885_init()
1540 atp_writeb_io(atpdev, 1, 0x16, 0x80); in atp885_init()
1541 k = atp_readb_base(atpdev, 0x28) & 0xcf; in atp885_init()
1542 k |= 0xc0; in atp885_init()
1543 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1544 k = atp_readb_base(atpdev, 0x1f) | 0x80; in atp885_init()
1545 atp_writeb_base(atpdev, 0x1f, k); in atp885_init()
1546 k = atp_readb_base(atpdev, 0x29) | 0x01; in atp885_init()
1547 atp_writeb_base(atpdev, 0x29, k); in atp885_init()
1549 shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1; in atp885_init()
1551 shpnt->this_id = atpdev->host_id[0]; in atp885_init()
1592 shpnt->io_port = pci_resource_start(pdev, 0); in atp870u_probe()
1593 shpnt->io_port &= 0xfffffff8; in atp870u_probe()
1594 shpnt->n_io_port = pci_resource_len(pdev, 0); in atp870u_probe()
1623 return 0; in atp870u_probe()
1656 for (j = 0; j < 0x18; j++) { in atp870u_abort()
1659 printk(" r1c=%2x", atp_readb_io(dev, c, 0x1c)); in atp870u_abort()
1660 printk(" r1f=%2x in_snd=%2x ", atp_readb_io(dev, c, 0x1f), dev->in_snd[c]); in atp870u_abort()
1661 printk(" d00=%2x", atp_readb_pci(dev, c, 0x00)); in atp870u_abort()
1662 printk(" d02=%2x", atp_readb_pci(dev, c, 0x02)); in atp870u_abort()
1663 for(j=0;j<16;j++) { in atp870u_abort()
1667 for (k=0; k < workrequ->cmd_len; k++) { in atp870u_abort()
1691 return 0; in atp870u_show_info()
1708 ip[0] = heads; in atp870u_biosparam()
1712 return 0; in atp870u_biosparam()
1755 { 0, },
1775 static unsigned char satn[9] = { 0, 0, 0, 0, 0, 0, 0, 6, 6 }; in atp_is()
1776 static unsigned char inqd[9] = { 0x12, 0, 0, 0, 0x24, 0, 0, 0x24, 6 }; in atp_is()
1777 static unsigned char synn[6] = { 0x80, 1, 3, 1, 0x19, 0x0e }; in atp_is()
1778 unsigned char synu[6] = { 0x80, 1, 3, 1, 0x0a, 0x0e }; in atp_is()
1779 static unsigned char synw[6] = { 0x80, 1, 3, 1, 0x19, 0x0e }; in atp_is()
1780 static unsigned char synw_870[6] = { 0x80, 1, 3, 1, 0x0c, 0x07 }; in atp_is()
1781 unsigned char synuw[6] = { 0x80, 1, 3, 1, 0x0a, 0x0e }; in atp_is()
1782 static unsigned char wide[6] = { 0x80, 1, 2, 3, 1, 0 }; in atp_is()
1783 static unsigned char u3[9] = { 0x80, 1, 6, 4, 0x09, 00, 0x0e, 0x01, 0x02 }; in atp_is()
1785 for (i = 0; i < 16; i++) { in atp_is()
1790 if ((m & dev->active_id[c]) != 0) { in atp_is()
1797 atp_writeb_io(dev, c, 0x1b, wide_chip ? 0x01 : 0x00); in atp_is()
1798 atp_writeb_io(dev, c, 1, 0x08); in atp_is()
1799 atp_writeb_io(dev, c, 2, 0x7f); in atp_is()
1800 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1806 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1807 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1808 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1809 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1810 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1812 if ((j & 0x08) != 0) { in atp_is()
1813 j = (j & 0x07) | 0x40; in atp_is()
1815 atp_writeb_io(dev, c, 0x15, j); in atp_is()
1816 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1818 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1821 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1824 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1829 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1831 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1833 atp_writeb_io(dev, c, 0x04, 0x00); in atp_is()
1836 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1838 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1841 j = atp_readb_io(dev, c, 0x17); in atp_is()
1842 if (j != 0x16) { in atp_is()
1843 atp_writeb_io(dev, c, 0x10, 0x41); in atp_is()
1847 atp_writeb_io(dev, c, 3, inqd[0]); in atp_is()
1853 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1854 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1855 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1856 atp_writeb_io(dev, c, 0x13, inqd[6]); in atp_is()
1857 atp_writeb_io(dev, c, 0x14, inqd[7]); in atp_is()
1858 atp_writeb_io(dev, c, 0x18, inqd[8]); in atp_is()
1860 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1863 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1866 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1870 atp_writeb_io(dev, c, 0x1b, 0x00); in atp_is()
1872 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1873 j = 0; in atp_is()
1875 k = atp_readb_io(dev, c, 0x1f); in atp_is()
1876 if ((k & 0x01) != 0) { in atp_is()
1877 mbuf[j++] = atp_readb_io(dev, c, 0x19); in atp_is()
1880 if ((k & 0x80) == 0) { in atp_is()
1883 j = atp_readb_io(dev, c, 0x17); in atp_is()
1884 if (j == 0x16) { in atp_is()
1887 atp_writeb_io(dev, c, 0x10, 0x46); in atp_is()
1888 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1889 atp_writeb_io(dev, c, 0x13, 0); in atp_is()
1890 atp_writeb_io(dev, c, 0x14, 0); in atp_is()
1891 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1893 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1896 if (atp_readb_io(dev, c, 0x17) != 0x16) in atp_is()
1900 mbuf[36] = 0; in atp_is()
1902 dev->id[c][i].devtype = mbuf[0]; in atp_is()
1907 if ((mbuf[7] & 0x60) == 0) { in atp_is()
1911 if ((i < 8) && ((dev->global_map[c] & 0x20) == 0)) in atp_is()
1914 if ((dev->global_map[c] & 0x20) == 0) in atp_is()
1917 if (lvdmode == 0) { in atp_is()
1920 if (dev->sp[c][i] != 0x04) // force u2 in atp_is()
1925 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1926 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1932 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1933 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1934 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1935 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1936 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1937 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1939 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1942 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1945 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1949 j = 0; in atp_is()
1950 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1951 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1953 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1954 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1955 atp_writeb_io(dev, c, 0x19, u3[j++]); in atp_is()
1959 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
1962 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1963 if (j == 0x0f) { in atp_is()
1966 if (j == 0x0a) { in atp_is()
1969 if (j == 0x0e) { in atp_is()
1974 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1975 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1976 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1977 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
1980 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1981 if (j == 0x0f) { in atp_is()
1984 if (j == 0x0a) { in atp_is()
1987 if (j == 0x0e) { in atp_is()
1992 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1993 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1994 k = 0; in atp_is()
1996 j = atp_readb_io(dev, c, 0x1f); in atp_is()
1997 if ((j & 0x01) != 0) { in atp_is()
1998 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2001 if ((j & 0x80) == 0x00) { in atp_is()
2004 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2005 if (j == 0x0f) { in atp_is()
2008 if (j == 0x0a) { in atp_is()
2011 if (j == 0x0e) { in atp_is()
2016 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2017 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2018 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2020 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00); in atp_is()
2022 j = atp_readb_io(dev, c, 0x17); in atp_is()
2023 if (j != 0x16) { in atp_is()
2024 if (j == 0x4e) { in atp_is()
2029 if (mbuf[0] != 0x01) { in atp_is()
2032 if (mbuf[1] != 0x06) { in atp_is()
2035 if (mbuf[2] != 0x04) { in atp_is()
2038 if (mbuf[3] == 0x09) { in atp_is()
2042 dev->id[c][i].devsp = 0xce; in atp_is()
2050 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
2051 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2057 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2058 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2059 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2060 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2061 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2062 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2064 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2067 if (atp_readb_io(dev, c, 0x17) != 0x11 && in atp_is()
2068 atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2071 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2075 j = 0; in atp_is()
2076 atp_writeb_io(dev, c, 0x14, 0x05); in atp_is()
2077 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2079 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2080 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2081 atp_writeb_io(dev, c, 0x19, wide[j++]); in atp_is()
2085 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2088 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2089 if (j == 0x0f) { in atp_is()
2092 if (j == 0x0a) { in atp_is()
2095 if (j == 0x0e) { in atp_is()
2100 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2101 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2102 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2103 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
2106 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2107 if (j == 0x0f) { in atp_is()
2110 if (j == 0x0a) { in atp_is()
2113 if (j == 0x0e) { in atp_is()
2118 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2119 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2120 k = 0; in atp_is()
2122 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2123 if ((j & 0x01) != 0) { in atp_is()
2124 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2127 if ((j & 0x80) == 0x00) { in atp_is()
2130 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2131 if (j == 0x0f) { in atp_is()
2134 if (j == 0x0a) { in atp_is()
2137 if (j == 0x0e) { in atp_is()
2142 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2143 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2144 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2146 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2149 j = atp_readb_io(dev, c, 0x17); in atp_is()
2150 if (j != 0x16) { in atp_is()
2151 if (j == 0x4e) { in atp_is()
2156 if (mbuf[0] != 0x01) { in atp_is()
2159 if (mbuf[1] != 0x02) { in atp_is()
2162 if (mbuf[2] != 0x03) { in atp_is()
2165 if (mbuf[3] != 0x01) { in atp_is()
2172 if ((dev->id[c][i].devtype == 0x00) || in atp_is()
2173 (dev->id[c][i].devtype == 0x07) || in atp_is()
2174 ((dev->id[c][i].devtype == 0x05) && ((n & 0x10) != 0))) { in atp_is()
2177 if ((dev->async[c] & m) != 0) { in atp_is()
2183 if ((!is885(dev) && !is880(dev)) || (dev->sp[c][i] == 0x02)) { in atp_is()
2184 synu[4] = 0x0c; in atp_is()
2185 synuw[4] = 0x0c; in atp_is()
2187 if (dev->sp[c][i] >= 0x03) { in atp_is()
2188 synu[4] = 0x0a; in atp_is()
2189 synuw[4] = 0x0a; in atp_is()
2192 j = 0; in atp_is()
2193 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2194 j |= 0x01; in atp_is()
2196 atp_writeb_io(dev, c, 0x1b, j); in atp_is()
2197 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2203 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2204 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2205 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2206 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2207 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2208 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2210 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2213 if (atp_readb_io(dev, c, 0x17) != 0x11 && in atp_is()
2214 atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2217 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2221 j = 0; in atp_is()
2222 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2223 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2225 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2226 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) { in atp_is()
2227 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2229 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2230 atp_writeb_io(dev, c, 0x19, synuw[j++]); in atp_is()
2232 atp_writeb_io(dev, c, 0x19, synw[j++]); in atp_is()
2235 atp_writeb_io(dev, c, 0x19, synw_870[j++]); in atp_is()
2237 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2238 atp_writeb_io(dev, c, 0x19, synu[j++]); in atp_is()
2240 atp_writeb_io(dev, c, 0x19, synn[j++]); in atp_is()
2246 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2249 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2250 if (j == 0x0f) { in atp_is()
2253 if (j == 0x0a) { in atp_is()
2256 if (j == 0x0e) { in atp_is()
2261 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2262 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) { in atp_is()
2263 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0x00) in atp_is()
2264 atp_writeb_io(dev, c, 0x19, 0x00); in atp_is()
2267 j = atp_readb_io(dev, c, 0x17); in atp_is()
2268 if (j == 0x85) { in atp_is()
2271 j &= 0x0f; in atp_is()
2272 if (j == 0x0f) { in atp_is()
2275 if (j == 0x0a) { in atp_is()
2278 if (j == 0x0e) { in atp_is()
2284 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2286 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2287 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2288 k = 0; in atp_is()
2290 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2291 if ((j & 0x01) != 0x00) { in atp_is()
2292 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2295 if ((j & 0x80) == 0x00) { in atp_is()
2299 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00); in atp_is()
2301 j = atp_readb_io(dev, c, 0x17); in atp_is()
2302 if (j == 0x85) { in atp_is()
2305 j &= 0x0f; in atp_is()
2306 if (j == 0x0f) { in atp_is()
2309 if (j == 0x0a) { in atp_is()
2312 if (j == 0x0e) { in atp_is()
2317 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2319 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2320 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2322 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2325 j = atp_readb_io(dev, c, 0x17); in atp_is()
2326 if (j != 0x16) { in atp_is()
2329 if (mbuf[0] != 0x01) { in atp_is()
2332 if (mbuf[1] != 0x03) { in atp_is()
2335 if (mbuf[4] == 0x00) { in atp_is()
2338 if (mbuf[3] > 0x64) { in atp_is()
2342 if (mbuf[4] > 0x0e) { in atp_is()
2343 mbuf[4] = 0x0e; in atp_is()
2346 if (mbuf[4] > 0x0c) { in atp_is()
2347 mbuf[4] = 0x0c; in atp_is()
2352 if (mbuf[3] < 0x0c) { in atp_is()
2353 j = 0xb0; in atp_is()
2356 if ((mbuf[3] < 0x0d) && (rmb == 0)) { in atp_is()
2357 j = 0xa0; in atp_is()
2360 if (mbuf[3] < 0x1a) { in atp_is()
2361 j = 0x20; in atp_is()
2364 if (mbuf[3] < 0x33) { in atp_is()
2365 j = 0x40; in atp_is()
2368 if (mbuf[3] < 0x4c) { in atp_is()
2369 j = 0x50; in atp_is()
2372 j = 0x60; in atp_is()
2374 dev->id[c][i].devsp = (dev->id[c][i].devsp & 0x0f) | j; in atp_is()