Lines Matching +full:0 +full:x17
132 for (c = 0; c < 2; c++) { in atp870u_intr_handle()
133 j = atp_readb_io(dev, c, 0x1f); in atp870u_intr_handle()
134 if ((j & 0x80) != 0) in atp870u_intr_handle()
136 dev->in_int[c] = 0; in atp870u_intr_handle()
138 if ((j & 0x80) == 0) in atp870u_intr_handle()
144 cmdp = atp_readb_io(dev, c, 0x10); in atp870u_intr_handle()
145 if (dev->working[c] != 0) { in atp870u_intr_handle()
147 if ((atp_readb_io(dev, c, 0x16) & 0x80) == 0) in atp870u_intr_handle()
148 atp_writeb_io(dev, c, 0x16, (atp_readb_io(dev, c, 0x16) | 0x80)); in atp870u_intr_handle()
150 if ((atp_readb_pci(dev, c, 0x00) & 0x08) != 0) in atp870u_intr_handle()
152 for (k=0; k < 1000; k++) { in atp870u_intr_handle()
153 if ((atp_readb_pci(dev, c, 2) & 0x08) == 0) in atp870u_intr_handle()
155 if ((atp_readb_pci(dev, c, 2) & 0x01) == 0) in atp870u_intr_handle()
159 atp_writeb_pci(dev, c, 0, 0x00); in atp870u_intr_handle()
161 i = atp_readb_io(dev, c, 0x17); in atp870u_intr_handle()
164 atp_writeb_pci(dev, c, 2, 0x06); in atp870u_intr_handle()
166 target_id = atp_readb_io(dev, c, 0x15); in atp870u_intr_handle()
172 if ((target_id & 0x40) != 0) { in atp870u_intr_handle()
173 target_id = (target_id & 0x07) | 0x08; in atp870u_intr_handle()
175 target_id &= 0x07; in atp870u_intr_handle()
178 if ((j & 0x40) != 0) { in atp870u_intr_handle()
179 if (dev->last_cmd[c] == 0xff) { in atp870u_intr_handle()
182 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
189 if (i == 0x85) { in atp870u_intr_handle()
190 if ((dev->last_cmd[c] & 0xf0) != 0x40) { in atp870u_intr_handle()
191 dev->last_cmd[c] = 0xff; in atp870u_intr_handle()
194 adrcnt = 0; in atp870u_intr_handle()
195 ((unsigned char *) &adrcnt)[2] = atp_readb_io(dev, c, 0x12); in atp870u_intr_handle()
196 ((unsigned char *) &adrcnt)[1] = atp_readb_io(dev, c, 0x13); in atp870u_intr_handle()
197 ((unsigned char *) &adrcnt)[0] = atp_readb_io(dev, c, 0x14); 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()
232 dev->in_int[c] = 0; in atp870u_intr_handle()
234 printk("Status 0x85 return\n"); in atp870u_intr_handle()
239 if (i == 0x40) { in atp870u_intr_handle()
240 dev->last_cmd[c] |= 0x40; in atp870u_intr_handle()
241 dev->in_int[c] = 0; in atp870u_intr_handle()
245 if (i == 0x21) { 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()
249 adrcnt = 0; 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()
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()
264 if ((i == 0x4c) || (i == 0x4d) || (i == 0x8c) || (i == 0x8d)) { in atp870u_intr_handle()
265 if ((i == 0x4c) || (i == 0x8c)) in atp870u_intr_handle()
266 i=0x48; in atp870u_intr_handle()
268 i=0x49; in atp870u_intr_handle()
272 if ((i == 0x80) || (i == 0x8f)) { in atp870u_intr_handle()
276 lun = 0; in atp870u_intr_handle()
277 if (cmdp == 0x44 || i == 0x80) 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()
283 if (cmdp == 0x41) { in atp870u_intr_handle()
285 printk("cmdp = 0x41\n"); in atp870u_intr_handle()
287 adrcnt = 0; 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()
295 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
296 dev->in_int[c] = 0; in atp870u_intr_handle()
300 printk("cmdp != 0x41\n"); 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()
316 j = atp_readb_base(dev, 0x29) & 0xfe; in atp870u_intr_handle()
317 atp_writeb_base(dev, 0x29, j); 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()
325 if ((target_id & 0x10) != 0) { in atp870u_intr_handle()
326 target_id = (target_id & 0x07) | 0x08; in atp870u_intr_handle()
328 target_id &= 0x07; in atp870u_intr_handle()
331 atp_writeb_io(dev, c, 0x10, 0x45); in atp870u_intr_handle()
335 for (l = 0; l < workreq->cmd_len; l++) 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()
345 atp_writeb_io(dev, c, 0x12, ((unsigned char *) &k)[2]); in atp870u_intr_handle()
346 atp_writeb_io(dev, c, 0x13, ((unsigned char *) &k)[1]); in atp870u_intr_handle()
347 atp_writeb_io(dev, c, 0x14, ((unsigned char *) &k)[0]); in atp870u_intr_handle()
349 …printk("k %x, k[0] 0x%x k[1] 0x%x k[2] 0x%x\n", k, atp_readb_io(dev, c, 0x14), atp_readb_io(dev, c… in atp870u_intr_handle()
354 j = (j & 0x07) | 0x40; 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()
364 //j=workreq->cmnd[0]; in atp870u_intr_handle()
365 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
366 i |= 0x0c; in atp870u_intr_handle()
370 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
371 atp_writeb_base(dev, 0x3b, (atp_readb_base(dev, 0x3b) & 0x3f) | 0xc0); in atp870u_intr_handle()
373 atp_writeb_base(dev, 0x3b, atp_readb_base(dev, 0x3b) & 0x3f); in atp870u_intr_handle()
375 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in atp870u_intr_handle()
376 atp_writeb_base(dev, 0x3a, (atp_readb_base(dev, 0x3a) & 0xf3) | 0x08); in atp870u_intr_handle()
378 atp_writeb_base(dev, 0x3a, atp_readb_base(dev, 0x3a) & 0xf3); in atp870u_intr_handle()
380 j = 0; in atp870u_intr_handle()
386 if ((id & dev->wide_id[c]) != 0) { in atp870u_intr_handle()
387 j |= 0x01; in atp870u_intr_handle()
389 atp_writeb_io(dev, c, 0x1b, j); in atp870u_intr_handle()
390 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) in atp870u_intr_handle()
391 atp_writeb_io(dev, c, 0x1b, j); in atp870u_intr_handle()
392 if (dev->id[c][target_id].last_len == 0) { in atp870u_intr_handle()
393 atp_writeb_io(dev, c, 0x18, 0x08); in atp870u_intr_handle()
394 dev->in_int[c] = 0; in atp870u_intr_handle()
396 printk("dev->id[c][target_id].last_len = 0\n"); in atp870u_intr_handle()
404 while (adrcnt != 0) { in atp870u_intr_handle()
406 if (id == 0) { in atp870u_intr_handle()
407 k = 0x10000; in atp870u_intr_handle()
414 ((unsigned long *)prd)[0] += adrcnt; in atp870u_intr_handle()
415 adrcnt = 0; in atp870u_intr_handle()
419 dev->id[c][target_id].prdaddr += 0x08; in atp870u_intr_handle()
420 prd += 0x08; in atp870u_intr_handle()
421 if (adrcnt == 0) { 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()
442 printk("status 0x80 return dirct != 0\n"); 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()
450 printk("status 0x80 return dirct = 0\n"); in atp870u_intr_handle()
461 if (i == 0x42 || i == 0x16) { 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()
465 if (i == 0x16) { in atp870u_intr_handle()
466 workreq->result = atp_readb_io(dev, c, 0x0f); in atp870u_intr_handle()
467 if (((dev->r1f[c][target_id] & 0x10) != 0) && is885(dev)) { in atp870u_intr_handle()
469 workreq->result = 0x02; in atp870u_intr_handle()
472 workreq->result = 0x02; in atp870u_intr_handle()
475 j = atp_readb_base(dev, 0x29) | 0x01; in atp870u_intr_handle()
476 atp_writeb_base(dev, 0x29, j); in atp870u_intr_handle()
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()
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()
520 if (i == 0x4f) { in atp870u_intr_handle()
521 i = 0x89; in atp870u_intr_handle()
523 i &= 0x0f; in atp870u_intr_handle()
524 if (i == 0x09) { 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()
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()
543 if (i == 0x08) { 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()
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()
561 if (i == 0x0a) 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()
591 req_p->sense_buffer[0]=0; in atp870u_queuecommand_lck()
592 scsi_set_resid(req_p, 0); in atp870u_queuecommand_lck()
594 req_p->result = 0x00040000; in atp870u_queuecommand_lck()
599 return 0; in atp870u_queuecommand_lck()
614 if ((m & dev->active_id[c]) == 0) { in atp870u_queuecommand_lck()
615 req_p->result = 0x00040000; in atp870u_queuecommand_lck()
617 return 0; in atp870u_queuecommand_lck()
626 req_p->result = 0; in atp870u_queuecommand_lck()
628 return 0; in atp870u_queuecommand_lck()
636 dev->quend[c] = 0; in atp870u_queuecommand_lck()
643 if (dev->quend[c] == 0) { in atp870u_queuecommand_lck()
650 req_p->result = 0x00020000; in atp870u_queuecommand_lck()
652 return 0; in atp870u_queuecommand_lck()
656 …[c] = %x atp_readb_io(dev, c, 0x1c) = %x dev->in_int[%d] = %d dev->in_snd[%d] = %d\n",dev->ioport[… 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()
667 return 0; in atp870u_queuecommand_lck()
688 unsigned long l, bttl = 0; in DEF_SCSI_QCMD()
691 if (dev->in_snd[c] != 0) { 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()
705 dev->last_cmd[c] = 0xff; 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()
721 dev->quhd[c] = 0; in DEF_SCSI_QCMD()
726 dev->in_snd[c] = 0; 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()
743 for(i=0;i<workreq->cmd_len;i++) { in DEF_SCSI_QCMD()
751 j = atp_readb_base(dev, 0x29) & 0xfe; in DEF_SCSI_QCMD()
752 atp_writeb_base(dev, 0x29, j); in DEF_SCSI_QCMD()
753 dev->r1f[c][scmd_id(workreq)] = 0; in DEF_SCSI_QCMD()
756 if (workreq->cmnd[0] == READ_CAPACITY) { in DEF_SCSI_QCMD()
760 if (workreq->cmnd[0] == 0x00) { in DEF_SCSI_QCMD()
761 l = 0; in DEF_SCSI_QCMD()
764 j = 0; in DEF_SCSI_QCMD()
772 if ((w & dev->wide_id[c]) != 0) { in DEF_SCSI_QCMD()
773 j |= 0x01; in DEF_SCSI_QCMD()
775 atp_writeb_io(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
776 while ((atp_readb_io(dev, c, 0x1b) & 0x01) != j) { in DEF_SCSI_QCMD()
777 atp_writeb_pci(dev, c, 0x1b, j); in DEF_SCSI_QCMD()
786 atp_writeb_io(dev, c, 0x00, workreq->cmd_len); in DEF_SCSI_QCMD()
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()
792 for (i = 0; i < workreq->cmd_len; i++) in DEF_SCSI_QCMD()
793 atp_writeb_io(dev, c, 0x03 + i, workreq->cmnd[i]); in DEF_SCSI_QCMD()
794 atp_writeb_io(dev, c, 0x0f, workreq->device->lun); in DEF_SCSI_QCMD()
798 atp_writeb_io(dev, c, 0x11, dev->id[c][target_id].devsp); in DEF_SCSI_QCMD()
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()
812 dev->id[c][j].tran_len = 0; in DEF_SCSI_QCMD()
819 if ((j & 0x08) != 0) { in DEF_SCSI_QCMD()
820 j = (j & 0x07) | 0x40; 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()
832 if (l == 0) { in DEF_SCSI_QCMD()
833 if (atp_readb_io(dev, c, 0x1c) == 0) { in DEF_SCSI_QCMD()
835 printk("change SCSI_CMD_REG 0x08\n"); 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()
853 i = 0; in DEF_SCSI_QCMD()
860 while (l > 0x10000) { in DEF_SCSI_QCMD()
861 (((u16 *) (prd))[i + 3]) = 0x0000; in DEF_SCSI_QCMD()
862 (((u16 *) (prd))[i + 2]) = 0x0000; in DEF_SCSI_QCMD()
864 l -= 0x10000; in DEF_SCSI_QCMD()
865 bttl += 0x10000; in DEF_SCSI_QCMD()
866 i += 0x04; in DEF_SCSI_QCMD()
870 (((u16 *) (prd))[i + 3]) = 0; in DEF_SCSI_QCMD()
871 i += 0x04; in DEF_SCSI_QCMD()
873 (((u16 *) (prd))[i - 1]) = cpu_to_le16(0x8000); in DEF_SCSI_QCMD()
875 …printk("prd %4x %4x %4x %4x\n",(((unsigned short int *)prd)[0]),(((unsigned short int *)prd)[1]),(… 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()
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()
888 if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || in DEF_SCSI_QCMD()
889 (workreq->cmnd[0] == 0x0a) || (workreq->cmnd[0] == 0x2a)) { in DEF_SCSI_QCMD()
890 j |= 0x0c; in DEF_SCSI_QCMD()
894 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in DEF_SCSI_QCMD()
895 atp_writeb_base(dev, 0x3b, (atp_readb_base(dev, 0x3b) & 0x3f) | 0xc0); in DEF_SCSI_QCMD()
897 atp_writeb_base(dev, 0x3b, atp_readb_base(dev, 0x3b) & 0x3f); in DEF_SCSI_QCMD()
899 …if ((workreq->cmnd[0] == 0x08) || (workreq->cmnd[0] == 0x28) || (workreq->cmnd[0] == 0x0a) || (wor… in DEF_SCSI_QCMD()
900 atp_writeb_base(dev, 0x3a, (atp_readb_base(dev, 0x3a) & 0xf3) | 0x08); in DEF_SCSI_QCMD()
902 atp_writeb_base(dev, 0x3a, atp_readb_base(dev, 0x3a) & 0xf3); 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()
938 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
939 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
940 k = atp_readw_io(dev, 0, 0x1c); in fun_scam()
942 if ((k & 0x8000) != 0) /* DB7 all release? */ in fun_scam()
943 i = 0; in fun_scam()
945 *val |= 0x4000; /* assert DB6 */ in fun_scam()
946 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
947 *val &= 0xdfff; /* assert DB5 */ in fun_scam()
948 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
949 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
950 if ((atp_readw_io(dev, 0, 0x1c) & 0x2000) != 0) /* DB5 all release? */ in fun_scam()
951 i = 0; in fun_scam()
953 *val |= 0x8000; /* no DB4-0, assert DB7 */ in fun_scam()
954 *val &= 0xe0ff; in fun_scam()
955 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
956 *val &= 0xbfff; /* release DB6 */ in fun_scam()
957 atp_writew_io(dev, 0, 0x1c, *val); in fun_scam()
958 for (i = 0; i < 10; i++) { /* stable >= bus settle delay(400 ns) */ in fun_scam()
959 if ((atp_readw_io(dev, 0, 0x1c) & 0x4000) != 0) /* DB6 all release? */ in fun_scam()
960 i = 0; in fun_scam()
975 0x38, 0x31, 0x32, 0x2b, 0x34, 0x2d, 0x2e, 0x27 in tscam()
980 for (i = 0; i < 0x10; i++) { in tscam()
981 udelay(0xffff); in tscam()
985 atp_writeb_io(dev, 0, 1, 0x08); in tscam()
986 atp_writeb_io(dev, 0, 2, 0x7f); in tscam()
987 atp_writeb_io(dev, 0, 0x11, 0x20); in tscam()
989 if ((scam_on & 0x40) == 0) { in tscam()
993 m <<= dev->host_id[0]; in tscam()
996 m |= 0xff00; in tscam()
1000 atp_writeb_io(dev, 0, 0x02, 0x02); /* 2*2=4ms,3EH 2/32*3E=3.9ms */ in tscam()
1001 atp_writeb_io(dev, 0, 0x03, 0); in tscam()
1002 atp_writeb_io(dev, 0, 0x04, 0); in tscam()
1003 atp_writeb_io(dev, 0, 0x05, 0); in tscam()
1004 atp_writeb_io(dev, 0, 0x06, 0); in tscam()
1005 atp_writeb_io(dev, 0, 0x07, 0); in tscam()
1006 atp_writeb_io(dev, 0, 0x08, 0); in tscam()
1008 for (i = 0; i < j; i++) { in tscam()
1011 if ((m & assignid_map) != 0) { in tscam()
1014 atp_writeb_io(dev, 0, 0x0f, 0); in tscam()
1015 atp_writeb_io(dev, 0, 0x12, 0); in tscam()
1016 atp_writeb_io(dev, 0, 0x13, 0); in tscam()
1017 atp_writeb_io(dev, 0, 0x14, 0); in tscam()
1019 k = (i & 0x07) | 0x40; in tscam()
1023 atp_writeb_io(dev, 0, 0x15, k); in tscam()
1025 atp_writeb_io(dev, 0, 0x1b, 0x01); in tscam()
1027 atp_writeb_io(dev, 0, 0x1b, 0x00); in tscam()
1029 atp_writeb_io(dev, 0, 0x18, 0x09); in tscam()
1031 while ((atp_readb_io(dev, 0, 0x1f) & 0x80) == 0x00) in tscam()
1033 k = atp_readb_io(dev, 0, 0x17); in tscam()
1034 if ((k == 0x85) || (k == 0x42)) in tscam()
1036 if (k != 0x16) in tscam()
1037 atp_writeb_io(dev, 0, 0x10, 0x41); in tscam()
1038 } while (k != 0x16); in tscam()
1039 if ((k == 0x85) || (k == 0x42)) in tscam()
1044 atp_writeb_io(dev, 0, 0x02, 0x7f); in tscam()
1045 atp_writeb_io(dev, 0, 0x1b, 0x02); in tscam()
1049 val = 0x0080; /* bsy */ in tscam()
1050 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1051 val |= 0x0040; /* sel */ in tscam()
1052 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1053 val |= 0x0004; /* msg */ in tscam()
1054 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1056 val &= 0x007f; /* no bsy */ in tscam()
1057 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1059 val &= 0x00fb; /* after 1ms no msg */ in tscam()
1060 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1061 while ((atp_readb_io(dev, 0, 0x1c) & 0x04) != 0) in tscam()
1065 for (n = 0; n < 0x30000; n++) in tscam()
1066 if ((atp_readb_io(dev, 0, 0x1c) & 0x80) != 0) /* bsy ? */ in tscam()
1068 if (n < 0x30000) in tscam()
1069 for (n = 0; n < 0x30000; n++) in tscam()
1070 if ((atp_readb_io(dev, 0, 0x1c) & 0x81) == 0x0081) { in tscam()
1072 val |= 0x8003; /* io,cd,db7 */ in tscam()
1073 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1075 val &= 0x00bf; /* no sel */ in tscam()
1076 atp_writew_io(dev, 0, 0x1c, val); in tscam()
1091 if ((atp_readb_io(dev, 0, 0x1c) & 0x80) == 0x00) { /* bsy ? */ in tscam()
1092 atp_writew_io(dev, 0, 0x1c, 0); in tscam()
1093 atp_writeb_io(dev, 0, 0x1b, 0); in tscam()
1094 atp_writeb_io(dev, 0, 0x15, 0); in tscam()
1095 atp_writeb_io(dev, 0, 0x18, 0x09); in tscam()
1096 while ((atp_readb_io(dev, 0, 0x1f) & 0x80) == 0) in tscam()
1098 atp_readb_io(dev, 0, 0x17); in tscam()
1101 val &= 0x00ff; /* synchronization */ in tscam()
1102 val |= 0x3f00; in tscam()
1105 val &= 0x00ff; /* isolation */ in tscam()
1106 val |= 0x2000; in tscam()
1110 j = 0; in tscam()
1113 if ((atp_readw_io(dev, 0, 0x1c) & 0x2000) == 0) in tscam()
1116 val &= 0x00ff; /* get ID_STRING */ in tscam()
1117 val |= 0x2000; in tscam()
1119 if ((k & 0x03) == 0) in tscam()
1121 mbuf[j] <<= 0x01; in tscam()
1122 mbuf[j] &= 0xfe; in tscam()
1123 if ((k & 0x02) != 0) in tscam()
1124 mbuf[j] |= 0x01; in tscam()
1126 if (i > 0) in tscam()
1133 /* mbuf[32]=0; in tscam()
1134 printk(" \n%x %x %x %s\n ",assignid_map,mbuf[0],mbuf[1],&mbuf[2]); */ in tscam()
1136 j = mbuf[0]; in tscam()
1137 if ((j & 0x20) != 0) { /* bit5=1:ID up to 7 */ in tscam()
1140 if ((j & 0x06) != 0) { /* IDvalid? */ in tscam()
1145 if ((m & assignid_map) == 0) in tscam()
1147 if (k > 0) in tscam()
1153 if ((m & assignid_map) != 0) { /* srch from max acceptable ID# */ in tscam()
1158 if ((m & assignid_map) == 0) in tscam()
1160 if (k > 0) in tscam()
1169 quintet[0] = 0x38; /* 1st dft ID<8 */ in tscam()
1171 quintet[0] = 0x31; /* 1st ID>=8 */ in tscam()
1173 k &= 0x07; in tscam()
1176 val &= 0x00ff; /* AssignID 1stQuintet,AH=001xxxxx */ in tscam()
1177 m = quintet[0] << 8; in tscam()
1180 val &= 0x00ff; /* AssignID 2ndQuintet,AH=001xxxxx */ in tscam()
1192 for (j=0; j < 2; j++) { in atp870u_free_tables()
1193 for (k = 0; k < 16; k++) { in atp870u_free_tables()
1206 for(c=0;c < 2;c++) { in atp870u_init_tables()
1207 for(k=0;k<16;k++) { 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()
1220 atp_dev->active_id[c] = 0; in atp870u_init_tables()
1221 atp_dev->wide_id[c] = 0; in atp870u_init_tables()
1222 atp_dev->host_id[c] = 0x07; in atp870u_init_tables()
1223 atp_dev->quhd[c] = 0; in atp870u_init_tables()
1224 atp_dev->quend[c] = 0; in atp870u_init_tables()
1225 atp_dev->last_cmd[c] = 0xff; in atp870u_init_tables()
1226 atp_dev->in_snd[c] = 0; in atp870u_init_tables()
1227 atp_dev->in_int[c] = 0; in atp870u_init_tables()
1229 for (k = 0; k < qcnt; k++) { in atp870u_init_tables()
1232 for (k = 0; k < 16; k++) { in atp870u_init_tables()
1234 atp_dev->sp[c][k] = 0x04; in atp870u_init_tables()
1237 return 0; in atp870u_init_tables()
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()
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()
1264 pci_read_config_byte(pdev, 0x49, &host_id); in atp870_init()
1269 atpdev->ioport[0] = shpnt->io_port; in atp870_init()
1270 atpdev->pciport[0] = shpnt->io_port + 0x20; in atp870_init()
1271 host_id &= 0x07; in atp870_init()
1272 atpdev->host_id[0] = host_id; in atp870_init()
1273 scam_on = atp_readb_pci(atpdev, 0, 2); in atp870_init()
1274 atpdev->global_map[0] = atp_readb_base(atpdev, 0x2d); in atp870_init()
1275 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x2e); in atp870_init()
1277 if (atpdev->ultra_map[0] == 0) { in atp870_init()
1278 scam_on = 0x00; in atp870_init()
1279 atpdev->global_map[0] = 0x20; in atp870_init()
1280 atpdev->ultra_map[0] = 0xffff; in atp870_init()
1283 if (pdev->revision > 0x07) /* check if atp876 chip */ in atp870_init()
1284 atp_writeb_base(atpdev, 0x3e, 0x00); /* enable terminator */ in atp870_init()
1286 k = (atp_readb_base(atpdev, 0x3a) & 0xf3) | 0x10; in atp870_init()
1287 atp_writeb_base(atpdev, 0x3a, k); in atp870_init()
1288 atp_writeb_base(atpdev, 0x3a, k & 0xdf); in atp870_init()
1290 atp_writeb_base(atpdev, 0x3a, k); in atp870_init()
1292 atp_set_host_id(atpdev, 0, host_id); in atp870_init()
1295 atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) | 0x10); in atp870_init()
1296 atp_is(atpdev, 0, wide_chip, 0); in atp870_init()
1297 atp_writeb_base(atpdev, 0x3a, atp_readb_base(atpdev, 0x3a) & 0xef); in atp870_init()
1298 atp_writeb_base(atpdev, 0x3b, atp_readb_base(atpdev, 0x3b) | 0x20); in atp870_init()
1310 pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0x80); in atp880_init()
1312 atpdev->ioport[0] = shpnt->io_port + 0x40; in atp880_init()
1313 atpdev->pciport[0] = shpnt->io_port + 0x28; in atp880_init()
1315 host_id = atp_readb_base(atpdev, 0x39) >> 4; in atp880_init()
1319 atpdev->host_id[0] = host_id; in atp880_init()
1321 atpdev->global_map[0] = atp_readb_base(atpdev, 0x35); in atp880_init()
1322 atpdev->ultra_map[0] = atp_readw_base(atpdev, 0x3c); in atp880_init()
1324 n = 0x3f09; in atp880_init()
1325 while (n < 0x4000) { in atp880_init()
1326 m = 0; in atp880_init()
1327 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1328 n += 0x0002; in atp880_init()
1329 if (atp_readb_base(atpdev, 0x30) == 0xff) in atp880_init()
1332 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1333 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1334 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1335 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1336 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1337 n += 0x0002; in atp880_init()
1338 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1339 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1340 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1341 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1342 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1343 n += 0x0002; in atp880_init()
1344 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1345 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1346 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1347 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1348 atp_writew_base(atpdev, 0x34, n); in atp880_init()
1349 n += 0x0002; in atp880_init()
1350 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x30); in atp880_init()
1351 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x31); in atp880_init()
1352 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x32); in atp880_init()
1353 atpdev->sp[0][m++] = atp_readb_base(atpdev, 0x33); in atp880_init()
1354 n += 0x0018; in atp880_init()
1356 atp_writew_base(atpdev, 0x34, 0); in atp880_init()
1357 atpdev->ultra_map[0] = 0; in atp880_init()
1358 atpdev->async[0] = 0; in atp880_init()
1359 for (k = 0; k < 16; k++) { in atp880_init()
1361 if (atpdev->sp[0][k] > 1) in atp880_init()
1362 atpdev->ultra_map[0] |= n; in atp880_init()
1364 if (atpdev->sp[0][k] == 0) in atp880_init()
1365 atpdev->async[0] |= n; in atp880_init()
1367 atpdev->async[0] = ~(atpdev->async[0]); in atp880_init()
1368 atp_writeb_base(atpdev, 0x35, atpdev->global_map[0]); in atp880_init()
1370 k = atp_readb_base(atpdev, 0x38) & 0x80; in atp880_init()
1371 atp_writeb_base(atpdev, 0x38, k); in atp880_init()
1372 atp_writeb_base(atpdev, 0x3b, 0x20); in atp880_init()
1374 atp_writeb_base(atpdev, 0x3b, 0); in atp880_init()
1376 atp_readb_io(atpdev, 0, 0x1b); in atp880_init()
1377 atp_readb_io(atpdev, 0, 0x17); in atp880_init()
1379 atp_set_host_id(atpdev, 0, host_id); in atp880_init()
1381 tscam(shpnt, true, atp_readb_base(atpdev, 0x22)); in atp880_init()
1382 atp_is(atpdev, 0, true, atp_readb_base(atpdev, 0x3f) & 0x40); in atp880_init()
1383 atp_writeb_base(atpdev, 0x38, 0xb0); in atp880_init()
1399 atpdev->ioport[0] = shpnt->io_port + 0x80; in atp885_init()
1400 atpdev->ioport[1] = shpnt->io_port + 0xc0; in atp885_init()
1401 atpdev->pciport[0] = shpnt->io_port + 0x40; in atp885_init()
1402 atpdev->pciport[1] = shpnt->io_port + 0x50; in atp885_init()
1404 c = atp_readb_base(atpdev, 0x29); in atp885_init()
1405 atp_writeb_base(atpdev, 0x29, c | 0x04); in atp885_init()
1407 n = 0x1f80; in atp885_init()
1408 while (n < 0x2000) { in atp885_init()
1409 atp_writew_base(atpdev, 0x3c, n); in atp885_init()
1410 if (atp_readl_base(atpdev, 0x38) == 0xffffffff) in atp885_init()
1412 for (m = 0; m < 2; m++) { in atp885_init()
1413 atpdev->global_map[m] = 0; in atp885_init()
1414 for (k = 0; k < 4; k++) { in atp885_init()
1415 atp_writew_base(atpdev, 0x3c, n++); in atp885_init()
1416 ((u32 *)&setupdata[m][0])[k] = atp_readl_base(atpdev, 0x38); in atp885_init()
1418 for (k = 0; k < 4; k++) { in atp885_init()
1419 atp_writew_base(atpdev, 0x3c, n++); in atp885_init()
1420 ((u32 *)&atpdev->sp[m][0])[k] = atp_readl_base(atpdev, 0x38); 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()
1430 for (k = 0; k < 16; k++) { in atp885_init()
1435 if (atpdev->sp[c][k] == 0) in atp885_init()
1440 if (atpdev->global_map[c] == 0) { in atp885_init()
1442 if ((k & 0x40) != 0) in atp885_init()
1443 atpdev->global_map[c] |= 0x20; in atp885_init()
1444 k &= 0x07; in atp885_init()
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()
1452 k = atp_readb_base(atpdev, 0x28) & 0x8f; in atp885_init()
1453 k |= 0x10; in atp885_init()
1454 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1455 atp_writeb_pci(atpdev, 0, 1, 0x80); in atp885_init()
1456 atp_writeb_pci(atpdev, 1, 1, 0x80); in atp885_init()
1458 atp_writeb_pci(atpdev, 0, 1, 0); in atp885_init()
1459 atp_writeb_pci(atpdev, 1, 1, 0); in atp885_init()
1461 atp_readb_io(atpdev, 0, 0x1b); in atp885_init()
1462 atp_readb_io(atpdev, 0, 0x17); in atp885_init()
1463 atp_readb_io(atpdev, 1, 0x1b); in atp885_init()
1464 atp_readb_io(atpdev, 1, 0x17); in atp885_init()
1466 k = atpdev->host_id[0]; in atp885_init()
1468 k = (k & 0x07) | 0x40; in atp885_init()
1469 atp_set_host_id(atpdev, 0, k); in atp885_init()
1473 k = (k & 0x07) | 0x40; in atp885_init()
1478 atp_is(atpdev, 0, true, atp_readb_io(atpdev, 0, 0x1b) >> 7); in atp885_init()
1479 atp_writeb_io(atpdev, 0, 0x16, 0x80); in atp885_init()
1481 atp_is(atpdev, 1, true, atp_readb_io(atpdev, 1, 0x1b) >> 7); in atp885_init()
1482 atp_writeb_io(atpdev, 1, 0x16, 0x80); in atp885_init()
1483 k = atp_readb_base(atpdev, 0x28) & 0xcf; in atp885_init()
1484 k |= 0xc0; in atp885_init()
1485 atp_writeb_base(atpdev, 0x28, k); in atp885_init()
1486 k = atp_readb_base(atpdev, 0x1f) | 0x80; in atp885_init()
1487 atp_writeb_base(atpdev, 0x1f, k); in atp885_init()
1488 k = atp_readb_base(atpdev, 0x29) | 0x01; in atp885_init()
1489 atp_writeb_base(atpdev, 0x29, k); in atp885_init()
1491 shpnt->max_lun = (atpdev->global_map[0] & 0x07) + 1; in atp885_init()
1493 shpnt->this_id = atpdev->host_id[0]; in atp885_init()
1534 shpnt->io_port = pci_resource_start(pdev, 0); in atp870u_probe()
1535 shpnt->io_port &= 0xfffffff8; in atp870u_probe()
1536 shpnt->n_io_port = pci_resource_len(pdev, 0); in atp870u_probe()
1565 return 0; in atp870u_probe()
1598 for (j = 0; j < 0x18; 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()
1605 for(j=0;j<16;j++) { in atp870u_abort()
1609 for (k=0; k < workrequ->cmd_len; k++) { in atp870u_abort()
1633 return 0; in atp870u_show_info()
1650 ip[0] = heads; in atp870u_biosparam()
1654 return 0; in atp870u_biosparam()
1698 { 0, },
1717 static unsigned char satn[9] = { 0, 0, 0, 0, 0, 0, 0, 6, 6 }; in atp_is()
1718 static unsigned char inqd[9] = { 0x12, 0, 0, 0, 0x24, 0, 0, 0x24, 6 }; in atp_is()
1719 static unsigned char synn[6] = { 0x80, 1, 3, 1, 0x19, 0x0e }; in atp_is()
1720 unsigned char synu[6] = { 0x80, 1, 3, 1, 0x0a, 0x0e }; in atp_is()
1721 static unsigned char synw[6] = { 0x80, 1, 3, 1, 0x19, 0x0e }; in atp_is()
1722 static unsigned char synw_870[6] = { 0x80, 1, 3, 1, 0x0c, 0x07 }; in atp_is()
1723 unsigned char synuw[6] = { 0x80, 1, 3, 1, 0x0a, 0x0e }; in atp_is()
1724 static unsigned char wide[6] = { 0x80, 1, 2, 3, 1, 0 }; in atp_is()
1725 static unsigned char u3[9] = { 0x80, 1, 6, 4, 0x09, 00, 0x0e, 0x01, 0x02 }; in atp_is()
1727 for (i = 0; i < 16; i++) { in atp_is()
1732 if ((m & dev->active_id[c]) != 0) { in atp_is()
1739 atp_writeb_io(dev, c, 0x1b, wide_chip ? 0x01 : 0x00); in atp_is()
1740 atp_writeb_io(dev, c, 1, 0x08); in atp_is()
1741 atp_writeb_io(dev, c, 2, 0x7f); in atp_is()
1742 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1748 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1749 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1750 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1751 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1752 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1754 if ((j & 0x08) != 0) { in atp_is()
1755 j = (j & 0x07) | 0x40; in atp_is()
1757 atp_writeb_io(dev, c, 0x15, j); in atp_is()
1758 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1760 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1763 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1766 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1771 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1773 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1775 atp_writeb_io(dev, c, 0x04, 0x00); in atp_is()
1778 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1780 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1783 j = atp_readb_io(dev, c, 0x17); in atp_is()
1784 if (j != 0x16) { in atp_is()
1785 atp_writeb_io(dev, c, 0x10, 0x41); in atp_is()
1789 atp_writeb_io(dev, c, 3, inqd[0]); in atp_is()
1795 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1796 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1797 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1798 atp_writeb_io(dev, c, 0x13, inqd[6]); in atp_is()
1799 atp_writeb_io(dev, c, 0x14, inqd[7]); in atp_is()
1800 atp_writeb_io(dev, c, 0x18, inqd[8]); in atp_is()
1802 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1805 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1808 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1812 atp_writeb_io(dev, c, 0x1b, 0x00); in atp_is()
1814 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1815 j = 0; in atp_is()
1817 k = atp_readb_io(dev, c, 0x1f); in atp_is()
1818 if ((k & 0x01) != 0) { in atp_is()
1819 mbuf[j++] = atp_readb_io(dev, c, 0x19); in atp_is()
1822 if ((k & 0x80) == 0) { in atp_is()
1825 j = atp_readb_io(dev, c, 0x17); in atp_is()
1826 if (j == 0x16) { in atp_is()
1829 atp_writeb_io(dev, c, 0x10, 0x46); in atp_is()
1830 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1831 atp_writeb_io(dev, c, 0x13, 0); in atp_is()
1832 atp_writeb_io(dev, c, 0x14, 0); in atp_is()
1833 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1835 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1838 if (atp_readb_io(dev, c, 0x17) != 0x16) in atp_is()
1842 mbuf[36] = 0; in atp_is()
1844 dev->id[c][i].devtype = mbuf[0]; in atp_is()
1849 if ((mbuf[7] & 0x60) == 0) { in atp_is()
1853 if ((i < 8) && ((dev->global_map[c] & 0x20) == 0)) in atp_is()
1856 if ((dev->global_map[c] & 0x20) == 0) in atp_is()
1859 if (lvdmode == 0) { in atp_is()
1862 if (dev->sp[c][i] != 0x04) // force u2 in atp_is()
1867 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1868 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1874 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1875 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
1876 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
1877 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
1878 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
1879 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
1881 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
1884 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1887 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
1891 j = 0; in atp_is()
1892 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1893 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1895 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1896 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1897 atp_writeb_io(dev, c, 0x19, u3[j++]); in atp_is()
1901 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
1904 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1905 if (j == 0x0f) { in atp_is()
1908 if (j == 0x0a) { in atp_is()
1911 if (j == 0x0e) { in atp_is()
1916 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1917 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
1918 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
1919 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
1922 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1923 if (j == 0x0f) { in atp_is()
1926 if (j == 0x0a) { in atp_is()
1929 if (j == 0x0e) { in atp_is()
1934 atp_writeb_io(dev, c, 0x14, 0x09); in atp_is()
1935 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
1936 k = 0; in atp_is()
1938 j = atp_readb_io(dev, c, 0x1f); in atp_is()
1939 if ((j & 0x01) != 0) { in atp_is()
1940 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
1943 if ((j & 0x80) == 0x00) { in atp_is()
1946 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
1947 if (j == 0x0f) { in atp_is()
1950 if (j == 0x0a) { in atp_is()
1953 if (j == 0x0e) { in atp_is()
1958 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
1959 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
1960 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
1962 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00); in atp_is()
1964 j = atp_readb_io(dev, c, 0x17); in atp_is()
1965 if (j != 0x16) { in atp_is()
1966 if (j == 0x4e) { in atp_is()
1971 if (mbuf[0] != 0x01) { in atp_is()
1974 if (mbuf[1] != 0x06) { in atp_is()
1977 if (mbuf[2] != 0x04) { in atp_is()
1980 if (mbuf[3] == 0x09) { in atp_is()
1984 dev->id[c][i].devsp = 0xce; in atp_is()
1991 atp_writeb_io(dev, c, 0x1b, 0x01); in atp_is()
1992 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
1998 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
1999 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2000 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2001 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2002 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2003 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2005 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2008 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2011 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2015 j = 0; in atp_is()
2016 atp_writeb_io(dev, c, 0x14, 0x05); in atp_is()
2017 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2019 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2020 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2021 atp_writeb_io(dev, c, 0x19, wide[j++]); in atp_is()
2025 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2028 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2029 if (j == 0x0f) { in atp_is()
2032 if (j == 0x0a) { in atp_is()
2035 if (j == 0x0e) { in atp_is()
2040 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2041 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2042 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) in atp_is()
2043 atp_writeb_io(dev, c, 0x19, 0); in atp_is()
2046 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2047 if (j == 0x0f) { in atp_is()
2050 if (j == 0x0a) { in atp_is()
2053 if (j == 0x0e) { in atp_is()
2058 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2059 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2060 k = 0; in atp_is()
2062 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2063 if ((j & 0x01) != 0) { in atp_is()
2064 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2067 if ((j & 0x80) == 0x00) { in atp_is()
2070 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2071 if (j == 0x0f) { in atp_is()
2074 if (j == 0x0a) { in atp_is()
2077 if (j == 0x0e) { in atp_is()
2082 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2083 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2084 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2086 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2089 j = atp_readb_io(dev, c, 0x17); in atp_is()
2090 if (j != 0x16) { in atp_is()
2091 if (j == 0x4e) { in atp_is()
2096 if (mbuf[0] != 0x01) { in atp_is()
2099 if (mbuf[1] != 0x02) { in atp_is()
2102 if (mbuf[2] != 0x03) { in atp_is()
2105 if (mbuf[3] != 0x01) { in atp_is()
2112 … ((dev->id[c][i].devtype == 0x00) || (dev->id[c][i].devtype == 0x07) || ((dev->id[c][i].devtype ==… in atp_is()
2115 if ((dev->async[c] & m) != 0) { in atp_is()
2121 if ((!is885(dev) && !is880(dev)) || (dev->sp[c][i] == 0x02)) { in atp_is()
2122 synu[4] = 0x0c; in atp_is()
2123 synuw[4] = 0x0c; in atp_is()
2125 if (dev->sp[c][i] >= 0x03) { in atp_is()
2126 synu[4] = 0x0a; in atp_is()
2127 synuw[4] = 0x0a; in atp_is()
2130 j = 0; in atp_is()
2131 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2132 j |= 0x01; in atp_is()
2134 atp_writeb_io(dev, c, 0x1b, j); in atp_is()
2135 atp_writeb_io(dev, c, 3, satn[0]); in atp_is()
2141 atp_writeb_io(dev, c, 0x0f, 0); in atp_is()
2142 atp_writeb_io(dev, c, 0x11, dev->id[c][i].devsp); in atp_is()
2143 atp_writeb_io(dev, c, 0x12, 0); in atp_is()
2144 atp_writeb_io(dev, c, 0x13, satn[6]); in atp_is()
2145 atp_writeb_io(dev, c, 0x14, satn[7]); in atp_is()
2146 atp_writeb_io(dev, c, 0x18, satn[8]); in atp_is()
2148 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2151 if (atp_readb_io(dev, c, 0x17) != 0x11 && atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2154 while (atp_readb_io(dev, c, 0x17) != 0x8e) in atp_is()
2158 j = 0; in atp_is()
2159 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2160 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2162 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0) { in atp_is()
2163 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0) { in atp_is()
2164 if ((m & dev->wide_id[c]) != 0) { in atp_is()
2166 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2167 atp_writeb_io(dev, c, 0x19, synuw[j++]); in atp_is()
2169 atp_writeb_io(dev, c, 0x19, synw[j++]); in atp_is()
2172 atp_writeb_io(dev, c, 0x19, synw_870[j++]); in atp_is()
2174 if ((m & dev->ultra_map[c]) != 0) { in atp_is()
2175 atp_writeb_io(dev, c, 0x19, synu[j++]); in atp_is()
2177 atp_writeb_io(dev, c, 0x19, synn[j++]); in atp_is()
2183 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00) in atp_is()
2186 j = atp_readb_io(dev, c, 0x17) & 0x0f; in atp_is()
2187 if (j == 0x0f) { in atp_is()
2190 if (j == 0x0a) { in atp_is()
2193 if (j == 0x0e) { in atp_is()
2198 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2199 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) { in atp_is()
2200 if ((atp_readb_io(dev, c, 0x1f) & 0x01) != 0x00) in atp_is()
2201 atp_writeb_io(dev, c, 0x19, 0x00); in atp_is()
2204 j = atp_readb_io(dev, c, 0x17); in atp_is()
2205 if (j == 0x85) { in atp_is()
2208 j &= 0x0f; in atp_is()
2209 if (j == 0x0f) { in atp_is()
2212 if (j == 0x0a) { in atp_is()
2215 if (j == 0x0e) { in atp_is()
2221 atp_writeb_io(dev, c, 0x14, 0x06); in atp_is()
2223 atp_writeb_io(dev, c, 0x14, 0xff); in atp_is()
2224 atp_writeb_io(dev, c, 0x18, 0x20); in atp_is()
2225 k = 0; in atp_is()
2227 j = atp_readb_io(dev, c, 0x1f); in atp_is()
2228 if ((j & 0x01) != 0x00) { in atp_is()
2229 mbuf[k++] = atp_readb_io(dev, c, 0x19); in atp_is()
2232 if ((j & 0x80) == 0x00) { in atp_is()
2236 while ((atp_readb_io(dev, c, 0x17) & 0x80) == 0x00); in atp_is()
2238 j = atp_readb_io(dev, c, 0x17); in atp_is()
2239 if (j == 0x85) { in atp_is()
2242 j &= 0x0f; in atp_is()
2243 if (j == 0x0f) { in atp_is()
2246 if (j == 0x0a) { in atp_is()
2249 if (j == 0x0e) { in atp_is()
2254 atp_writeb_io(dev, c, 0x10, 0x30); in atp_is()
2256 atp_writeb_io(dev, c, 0x14, 0x00); in atp_is()
2257 atp_writeb_io(dev, c, 0x18, 0x08); in atp_is()
2259 while ((atp_readb_io(dev, c, 0x1f) & 0x80) == 0x00) in atp_is()
2262 j = atp_readb_io(dev, c, 0x17); in atp_is()
2263 if (j != 0x16) { in atp_is()
2266 if (mbuf[0] != 0x01) { in atp_is()
2269 if (mbuf[1] != 0x03) { in atp_is()
2272 if (mbuf[4] == 0x00) { in atp_is()
2275 if (mbuf[3] > 0x64) { in atp_is()
2279 if (mbuf[4] > 0x0e) { in atp_is()
2280 mbuf[4] = 0x0e; in atp_is()
2283 if (mbuf[4] > 0x0c) { in atp_is()
2284 mbuf[4] = 0x0c; in atp_is()
2289 if (mbuf[3] < 0x0c) { in atp_is()
2290 j = 0xb0; in atp_is()
2293 if ((mbuf[3] < 0x0d) && (rmb == 0)) { in atp_is()
2294 j = 0xa0; in atp_is()
2297 if (mbuf[3] < 0x1a) { in atp_is()
2298 j = 0x20; in atp_is()
2301 if (mbuf[3] < 0x33) { in atp_is()
2302 j = 0x40; in atp_is()
2305 if (mbuf[3] < 0x4c) { in atp_is()
2306 j = 0x50; in atp_is()
2309 j = 0x60; in atp_is()
2311 dev->id[c][i].devsp = (dev->id[c][i].devsp & 0x0f) | j; in atp_is()