Lines Matching refs:dev
148 struct sci_softc *dev = device_private(chan->chan_adapter->adapt_dev); in sci_scsipi_request() local
164 if (dev->sc_xs && flags & XS_CTL_POLL) in sci_scsipi_request()
172 if (dev->sc_xs) { in sci_scsipi_request()
179 dev->sc_xs = xs; in sci_scsipi_request()
185 sci_donextcmd(dev); in sci_scsipi_request()
201 sci_donextcmd(struct sci_softc *dev) in sci_donextcmd() argument
207 xs = dev->sc_xs; in sci_donextcmd()
219 scireset(dev); in sci_donextcmd()
221 dev->sc_stat[0] = -1; in sci_donextcmd()
224 stat = sciicmd(dev, periph->periph_target, xs->cmd, xs->cmdlen, in sci_donextcmd()
226 else if (scigo(dev, xs) == 0) in sci_donextcmd()
229 stat = dev->sc_stat[0]; in sci_donextcmd()
231 sci_scsidone(dev, stat); in sci_donextcmd()
235 sci_scsidone(struct sci_softc *dev, int stat) in sci_scsidone() argument
239 xs = dev->sc_xs; in sci_scsidone()
267 sciabort(struct sci_softc *dev, const char *where) in sciabort() argument
270 device_xname(dev->sc_dev), where, *dev->sci_csr, *dev->sci_bus_csr); in sciabort()
272 if (dev->sc_flags & SCI_SELECTED) { in sciabort()
275 dev->sc_flags &= ~SCI_SELECTED; in sciabort()
277 scireset (dev); in sciabort()
310 scireset(struct sci_softc *dev) in scireset() argument
315 dev->sc_flags &= ~SCI_SELECTED; in scireset()
316 if (dev->sc_flags & SCI_ALIVE) in scireset()
317 sciabort(dev, "reset"); in scireset()
319 printf("%s: ", device_xname(dev->sc_dev)); in scireset()
328 *dev->sci_icmd = SCI_ICMD_TEST; in scireset()
329 *dev->sci_icmd = SCI_ICMD_TEST | SCI_ICMD_RST; in scireset()
331 *dev->sci_icmd = 0; in scireset()
336 *dev->sci_icmd = 0; in scireset()
337 *dev->sci_tcmd = 0; in scireset()
338 *dev->sci_sel_enb = 0; in scireset()
345 dev->sc_flags |= SCI_ALIVE; in scireset()
349 scierror(struct sci_softc *dev, u_char csr) in scierror() argument
353 xs = dev->sc_xs; in scierror()
362 printf("%s: ", device_xname(dev->sc_dev)); in scierror()
370 sciselectbus(struct sci_softc *dev, u_char target, u_char our_addr) in sciselectbus() argument
377 if (dev->sc_flags & SCI_SELECTED) /* XXXX */ in sciselectbus()
380 if ((*dev->sci_bus_csr & (SCI_BUS_BSY|SCI_BUS_SEL)) && in sciselectbus()
381 (*dev->sci_bus_csr & (SCI_BUS_BSY|SCI_BUS_SEL)) && in sciselectbus()
382 (*dev->sci_bus_csr & (SCI_BUS_BSY|SCI_BUS_SEL))) in sciselectbus()
385 *dev->sci_tcmd = 0; in sciselectbus()
386 *dev->sci_odata = 0x80 + (1 << target); in sciselectbus()
387 *dev->sci_icmd = SCI_ICMD_DATA|SCI_ICMD_SEL; in sciselectbus()
388 while ((*dev->sci_bus_csr & SCI_BUS_BSY) == 0) { in sciselectbus()
396 *dev->sci_icmd = 0; in sciselectbus()
397 dev->sc_flags |= SCI_SELECTED; in sciselectbus()
400 *dev->sci_icmd = 0; in sciselectbus()
405 sci_ixfer_out(register struct sci_softc *dev, int len, register u_char *buf, in sci_ixfer_out() argument
415 *dev->sci_tcmd = phase; in sci_ixfer_out()
416 *dev->sci_icmd = SCI_ICMD_DATA; in sci_ixfer_out()
418 csr = *dev->sci_bus_csr; in sci_ixfer_out()
429 csr = *dev->sci_bus_csr; in sci_ixfer_out()
432 if (!(*dev->sci_csr & SCI_CSR_PHASE_MATCH)) in sci_ixfer_out()
434 *dev->sci_odata = *buf; in sci_ixfer_out()
435 *dev->sci_icmd = SCI_ICMD_DATA|SCI_ICMD_ACK; in sci_ixfer_out()
437 while (*dev->sci_bus_csr & SCI_BUS_REQ); in sci_ixfer_out()
438 *dev->sci_icmd = SCI_ICMD_DATA; in sci_ixfer_out()
446 sci_ixfer_in(struct sci_softc *dev, int len, register u_char *buf, int phase) in sci_ixfer_in() argument
450 volatile register u_char *sci_bus_csr = dev->sci_bus_csr; in sci_ixfer_in()
451 volatile register u_char *sci_data = dev->sci_data; in sci_ixfer_in()
452 volatile register u_char *sci_icmd = dev->sci_icmd; in sci_ixfer_in()
461 *dev->sci_tcmd = phase; in sci_ixfer_in()
479 if (!(*dev->sci_csr & SCI_CSR_PHASE_MATCH)) in sci_ixfer_in()
505 sciicmd(struct sci_softc *dev, int target, void *cbuf, int clen, void *buf, in sciicmd() argument
512 if (sciselectbus (dev, target, dev->sc_scsi_addr)) in sciicmd()
518 dev->sc_stat[0] = 0xff; in sciicmd()
519 dev->sc_msg[0] = 0xff; in sciicmd()
524 while ((*dev->sci_bus_csr & (SCI_BUS_REQ|SCI_BUS_BSY)) == SCI_BUS_BSY); in sciicmd()
526 QPRINTF((">CSR:%02x<", *dev->sci_bus_csr)); in sciicmd()
527 if ((*dev->sci_bus_csr & SCI_BUS_REQ) == 0) { in sciicmd()
530 phase = SCI_PHASE(*dev->sci_bus_csr); in sciicmd()
534 if (sci_ixfer_out (dev, clen, cbuf, phase)) in sciicmd()
543 sci_ixfer_in (dev, len, buf, phase); in sciicmd()
551 if (sci_ixfer_out (dev, len, buf, phase)) in sciicmd()
557 dev->sc_msg[0] = 0xff; in sciicmd()
558 sci_ixfer_in (dev, 1, dev->sc_msg,phase); in sciicmd()
559 dev->sc_flags &= ~SCI_SELECTED; in sciicmd()
560 while (*dev->sci_bus_csr & SCI_BUS_BSY); in sciicmd()
569 sci_ixfer_in (dev, 1, dev->sc_stat, phase); in sciicmd()
590 sciabort(dev, "icmd"); in sciicmd()
592 QPRINTF(("=STS:%02x=", dev->sc_stat[0])); in sciicmd()
593 return (dev->sc_stat[0]); in sciicmd()
597 scigo(struct sci_softc *dev, struct scsipi_xfer *xs) in scigo() argument
607 sciicmd (dev, target, (u_char *) xs->cmd, xs->cmdlen, in scigo()
615 if (sciselectbus (dev, target, dev->sc_scsi_addr)) in scigo()
621 dev->sc_stat[0] = 0xff; in scigo()
622 dev->sc_msg[0] = 0xff; in scigo()
625 while ((*dev->sci_bus_csr & (SCI_BUS_REQ|SCI_BUS_BSY)) == in scigo()
628 QPRINTF((">CSR:%02x<", *dev->sci_bus_csr)); in scigo()
629 if ((*dev->sci_bus_csr & SCI_BUS_REQ) == 0) { in scigo()
632 phase = SCI_PHASE(*dev->sci_bus_csr); in scigo()
636 if (sci_ixfer_out (dev, xs->cmdlen, (u_char *) xs->cmd, phase)) in scigo()
645 if (count >= 128 && dev->dma_xfer_in) in scigo()
646 (*dev->dma_xfer_in)(dev, count, addr, phase); in scigo()
648 sci_ixfer_in (dev, count, addr, phase); in scigo()
656 if (count >= 128 && dev->dma_xfer_out) in scigo()
657 (*dev->dma_xfer_out)(dev, count, addr, phase); in scigo()
659 if (sci_ixfer_out (dev, count, addr, phase)) in scigo()
665 dev->sc_msg[0] = 0xff; in scigo()
666 sci_ixfer_in (dev, 1, dev->sc_msg,phase); in scigo()
667 dev->sc_flags &= ~SCI_SELECTED; in scigo()
668 while (*dev->sci_bus_csr & SCI_BUS_BSY); in scigo()
677 sci_ixfer_in (dev, 1, dev->sc_stat, phase); in scigo()
692 sciabort(dev, "go"); in scigo()
694 QPRINTF(("=STS:%02x=", dev->sc_stat[0])); in scigo()