Lines Matching defs:esc

227 	struct esp_softc *esc = device_private(self);
228 struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x;
231 if (!esc->sc_dma) {
233 esc->sc_dma = nextdma_findchannel("scsi");
234 if (!esc->sc_dma)
239 nextdma_setconf(esc->sc_dma, shutdown_cb, &esp_dmacb_shutdown);
240 nextdma_setconf(esc->sc_dma, continue_cb, &esp_dmacb_continue);
241 nextdma_setconf(esc->sc_dma, completed_cb, &esp_dmacb_completed);
242 nextdma_setconf(esc->sc_dma, cb_arg, sc);
244 error = bus_dmamap_create(esc->sc_dma->sc_dmat,
248 0, BUS_DMA_ALLOCNOW, &esc->sc_main_dmamap);
254 error = bus_dmamap_create(esc->sc_dma->sc_dmat,
256 0, BUS_DMA_ALLOCNOW, &esc->sc_tail_dmamap);
281 device_xname(&esc->sc_dma->sc_dev));
287 struct esp_softc *esc = device_private(self);
288 struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x;
297 esc->sc_bst = ia->ia_bst;
298 if (bus_space_map(esc->sc_bst, NEXT_P_SCSI,
299 ESP_DEVICE_SIZE, 0, &esc->sc_bsh)) {
400 esc->sc_dma = nextdma_findchannel ("scsi");
401 if (esc->sc_dma) {
418 struct esp_softc *esc = (struct esp_softc *)sc;
420 return bus_space_read_1(esc->sc_bst, esc->sc_bsh, reg);
426 struct esp_softc *esc = (struct esp_softc *)sc;
428 bus_space_write_1(esc->sc_bst, esc->sc_bsh, reg, val);
461 struct esp_softc *esc = (struct esp_softc *)sc;
467 (esc->sc_datain ? ESPDCTL_DMARD : 0));
482 struct esp_softc *esc = (struct esp_softc *)sc;
483 struct nextdma_softc *nsc = esc->sc_dma;
530 (esc->sc_datain ? ESPDCTL_DMARD : 0));
542 (esc->sc_datain ?
548 (esc->sc_datain ?
593 esc->sc_datain ? "read" : "write");
620 (esc->sc_datain ? ESPDCTL_DMARD : 0));
623 while (esc->sc_datain != -1)
626 if (esc->sc_dmaaddr) {
649 xfer_len = esc->sc_dmasize - resid;
661 if (esc->sc_begin)
662 xfer_len += esc->sc_begin_size;
663 if (esc->sc_main_dmamap)
665 esc->sc_main_dmamap->dm_xfer_len;
666 if (esc->sc_tail_dmamap)
668 esc->sc_tail_dmamap->dm_xfer_len;
675 (esc->sc_datain ?
679 (esc->sc_datain ?
716 esc->sc_dmasize, (int)xfer_len, resid);
720 *esc->sc_dmaaddr += xfer_len;
721 *esc->sc_dmalen -= xfer_len;
722 esc->sc_dmaaddr = 0;
723 esc->sc_dmalen = 0;
724 esc->sc_dmasize = 0;
742 struct esp_softc *esc = (struct esp_softc *)sc;
766 nextdma_reset(esc->sc_dma);
767 nextdma_init(esc->sc_dma);
769 esc->sc_datain = -1;
770 esc->sc_dmaaddr = 0;
771 esc->sc_dmalen = 0;
772 esc->sc_dmasize = 0;
774 esc->sc_loaded = 0;
776 esc->sc_begin = 0;
777 esc->sc_begin_size = 0;
779 if (esc->sc_main_dmamap->dm_mapsize) {
780 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_main_dmamap);
782 esc->sc_main = 0;
783 esc->sc_main_size = 0;
785 if (esc->sc_tail_dmamap->dm_mapsize) {
786 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap);
788 esc->sc_tail = 0;
789 esc->sc_tail_size = 0;
804 struct esp_softc *esc = (struct esp_softc *)sc;
817 v = (int *)(&(esc->sc_tailbuf[0]));
818 for (i = 0; i < ((sizeof(esc->sc_tailbuf) / 4)); i++)
823 v = (int *)(&(esc->sc_tailbuf[0]));
824 for (i = 0; i < ((sizeof(esc->sc_tailbuf) / 4)); i++)
843 if ((esc->sc_datain != -1) ||
844 (esc->sc_main_dmamap->dm_mapsize != 0) ||
845 (esc->sc_tail_dmamap->dm_mapsize != 0) ||
846 (esc->sc_dmasize != 0)) {
850 device_xname(sc->sc_dev), esc->sc_datain,
851 esc->sc_main_dmamap->dm_mapsize,
852 esc->sc_tail_dmamap->dm_mapsize,
853 esc->sc_dmasize);
866 esc->sc_datain = datain;
867 esc->sc_dmaaddr = addr;
868 esc->sc_dmalen = len;
869 esc->sc_dmasize = *dmasize;
871 esc->sc_loaded = 0;
885 u_long bgn = (u_long)(*esc->sc_dmaaddr);
886 u_long end = bgn + esc->sc_dmasize;
902 if (!esc->sc_datain) {
914 if ((slop_bgn_size+slop_end_size >= esc->sc_dmasize)
916 || (esc->sc_dmasize <= ESP_DMA_MAXTAIL)
920 slop_end_size = esc->sc_dmasize;
925 esc->sc_begin = *esc->sc_dmaaddr;
926 esc->sc_begin_size = slop_bgn_size;
928 esc->sc_begin = 0;
929 esc->sc_begin_size = 0;
935 esc->sc_main = *esc->sc_dmaaddr;
936 esc->sc_main += slop_bgn_size;
937 esc->sc_main_size =
938 (esc->sc_dmasize) - (slop_end_size+slop_bgn_size);
940 if (esc->sc_main_size) {
943 if (!esc->sc_datain ||
944 DMA_ENDALIGNED(esc->sc_main_size +
950 esc->sc_main_size += slop_end_size;
952 if (!esc->sc_datain) {
953 esc->sc_main_size =
955 esc->sc_main +
956 esc->sc_main_size) -
957 esc->sc_main;
961 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
962 esc->sc_main_dmamap,
963 esc->sc_main, esc->sc_main_size,
967 printf("%s: esc->sc_main_dmamap->"
970 esc->sc_main_dmamap->_dm_size);
971 printf("%s: esc->sc_main_dmamap->"
974 esc->sc_main_dmamap->_dm_segcnt);
975 printf("%s: esc->sc_main_dmamap->"
978 esc->sc_main_dmamap->_dm_maxsegsz);
979 printf("%s: esc->sc_main_dmamap->"
982 esc->sc_main_dmamap->_dm_boundary);
988 error, esc->sc_main,
989 esc->sc_main_size);
991 if (!esc->sc_datain) {
995 esc->sc_main_dmamap->dm_mapsize +=
997 esc->sc_main_dmamap->dm_segs[
998 esc->sc_main_dmamap->dm_nsegs -
1003 bus_dmamap_sync(esc->sc_dma->sc_dmat,
1004 esc->sc_main_dmamap,
1005 0, esc->sc_main_dmamap->dm_mapsize,
1006 (esc->sc_datain ? BUS_DMASYNC_PREREAD :
1008 esc->sc_main_dmamap->dm_xfer_len = 0;
1011 esc->sc_main = 0;
1017 esc->sc_tail = DMA_ENDALIGN(uint8_t *,
1018 esc->sc_tailbuf + slop_end_size) - slop_end_size;
1024 esc->sc_tail = DMA_SCSI_ALIGN(uint8_t *, esc->sc_tail);
1029 esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,
1030 esc->sc_tail + slop_end_size) - esc->sc_tail;
1033 if (!esc->sc_datain) {
1034 esc->sc_tail_size += ESP_DMA_OVERRUN;
1039 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1040 esc->sc_tail_dmamap,
1041 esc->sc_tail, esc->sc_tail_size,
1047 esc->sc_tail,esc->sc_tail_size);
1050 bus_dmamap_sync(esc->sc_dma->sc_dmat,
1051 esc->sc_tail_dmamap, 0,
1052 esc->sc_tail_dmamap->dm_mapsize,
1053 (esc->sc_datain ? BUS_DMASYNC_PREREAD :
1055 esc->sc_tail_dmamap->dm_xfer_len = 0;
1061 esc->sc_begin = *esc->sc_dmaaddr;
1063 ((u_long)esc->sc_begin % DMA_SCSI_ALIGNMENT);
1066 slop_end_size = esc->sc_dmasize - slop_bgn_size;
1068 if (slop_bgn_size < esc->sc_dmasize) {
1071 esc->sc_tail = 0;
1072 esc->sc_tail_size = 0;
1074 esc->sc_begin_size = slop_bgn_size;
1075 esc->sc_main = *esc->sc_dmaaddr;
1076 esc->sc_main += slop_bgn_size;
1077 esc->sc_main_size = DMA_ENDALIGN(uint8_t *,
1078 esc->sc_main + esc->sc_dmasize - slop_bgn_size) -
1079 esc->sc_main;
1081 if (!esc->sc_datain) {
1082 esc->sc_main_size += ESP_DMA_OVERRUN;
1084 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1085 esc->sc_main_dmamap,
1086 esc->sc_main, esc->sc_main_size,
1092 esc->sc_main,esc->sc_main_size);
1095 esc->sc_begin = 0;
1096 esc->sc_begin_size = 0;
1097 esc->sc_main = 0;
1098 esc->sc_main_size = 0;
1101 esc->sc_tail = DMA_ENDALIGN(uint8_t *,
1102 esc->sc_tailbuf + slop_bgn_size) - slop_bgn_size;
1109 esc->sc_tail = DMA_SCSI_ALIGN(void *, esc->sc_tailbuf);
1114 esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,
1115 esc->sc_tail + esc->sc_dmasize) - esc->sc_tail;
1118 if (!esc->sc_datain) {
1119 esc->sc_tail_size += ESP_DMA_OVERRUN;
1124 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1125 esc->sc_tail_dmamap,
1126 esc->sc_tail, esc->sc_tail_size,
1132 esc->sc_tail, esc->sc_tail_size);
1140 *esc->sc_dmaaddr, esc->sc_dmasize,
1141 esc->sc_begin, esc->sc_begin_size,
1142 esc->sc_main, esc->sc_main_size,
1143 esc->sc_tail, esc->sc_tail_size));
1154 struct esp_softc *esc = (struct esp_softc *)sc;
1158 device_xname(sc->sc_dev), esc->sc_datain);
1160 device_xname(sc->sc_dev), esc->sc_loaded);
1162 if (esc->sc_dmaaddr) {
1164 device_xname(sc->sc_dev), *esc->sc_dmaaddr);
1169 if (esc->sc_dmalen) {
1171 device_xname(sc->sc_dev), *esc->sc_dmalen);
1177 device_xname(sc->sc_dev), esc->sc_dmasize);
1180 device_xname(sc->sc_dev), esc->sc_begin, esc->sc_begin_size);
1182 device_xname(sc->sc_dev), esc->sc_main, esc->sc_main_size);
1183 /* if (esc->sc_main) */ {
1185 bus_dmamap_t map = esc->sc_main_dmamap;
1199 device_xname(sc->sc_dev), esc->sc_tail, esc->sc_tail_size);
1200 /* if (esc->sc_tail) */ {
1202 bus_dmamap_t map = esc->sc_tail_dmamap;
1229 struct esp_softc *esc = (struct esp_softc *)sc;
1230 struct nextdma_softc *nsc = esc->sc_dma;
1248 device_xname(sc->sc_dev), esc->sc_datain));
1267 if (esc->sc_dmasize == 0) {
1273 if ((esc->sc_begin_size == 0) &&
1274 (esc->sc_main_dmamap->dm_mapsize == 0) &&
1275 (esc->sc_tail_dmamap->dm_mapsize == 0)) {
1284 if (esc->sc_datain) {
1287 device_xname(sc->sc_dev), esc->sc_begin_size));
1288 for (i = 0; i < esc->sc_begin_size; i++) {
1289 esc->sc_begin[i] = NCR_READ_REG(sc, NCR_FIFO);
1290 DPRINTF((" %02x", esc->sc_begin[i] & 0xff));
1296 device_xname(sc->sc_dev), esc->sc_begin_size));
1297 for (i = 0; i < esc->sc_begin_size; i++) {
1298 NCR_WRITE_REG(sc, NCR_FIFO, esc->sc_begin[i]);
1299 DPRINTF((" %02x",esc->sc_begin[i] & 0xff));
1304 if (esc->sc_main_dmamap->dm_mapsize) {
1305 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1306 0, esc->sc_main_dmamap->dm_mapsize,
1307 (esc->sc_datain ?
1309 esc->sc_main_dmamap->dm_xfer_len = 0;
1312 if (esc->sc_tail_dmamap->dm_mapsize) {
1314 if (!esc->sc_datain) {
1315 memcpy(esc->sc_tail, *esc->sc_dmaaddr +
1316 esc->sc_begin_size+esc->sc_main_size,
1317 esc->sc_dmasize -
1318 (esc->sc_begin_size + esc->sc_main_size));
1320 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1321 0, esc->sc_tail_dmamap->dm_mapsize,
1322 (esc->sc_datain ?
1324 esc->sc_tail_dmamap->dm_xfer_len = 0;
1328 nextdma_start(nsc, (esc->sc_datain ? DMACSR_SETREAD : DMACSR_SETWRITE));
1330 if (esc->sc_datain) {
1341 if (esc->sc_begin_size) {
1343 *ndtracep++ = 'A' + esc->sc_begin_size;
1347 if (esc->sc_main_size) {
1349 *ndtracep++ = '0' + esc->sc_main_dmamap->dm_nsegs;
1353 if (esc->sc_tail_size) {
1355 *ndtracep++ = 'A' + esc->sc_tail_size;
1365 struct esp_softc *esc = (struct esp_softc *)sc;
1367 nextdma_print(esc->sc_dma);
1379 struct esp_softc *esc = (struct esp_softc *)sc;
1382 r = (esc->sc_dmaaddr != NULL); /* !nextdma_finished(esc->sc_dma); */
1397 struct esp_softc *esc = (struct esp_softc *)sc;
1398 struct nextdma_softc *nsc = esc->sc_dma;
1645 struct esp_softc *esc = (struct esp_softc *)sc;
1651 if ((esc->sc_datain < 0) || (esc->sc_datain > 1)) {
1654 device_xname(sc->sc_dev), esc->sc_datain);
1658 if (((esc->sc_loaded & ESP_LOADED_MAIN) == 0) &&
1659 (esc->sc_main_dmamap->dm_mapsize)) {
1662 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1663 0, esc->sc_main_dmamap->dm_mapsize,
1664 (esc->sc_datain ?
1666 esc->sc_main_dmamap->dm_xfer_len = 0;
1668 esc->sc_loaded |= ESP_LOADED_MAIN;
1669 return esc->sc_main_dmamap;
1672 if (((esc->sc_loaded & ESP_LOADED_TAIL) == 0) &&
1673 (esc->sc_tail_dmamap->dm_mapsize)) {
1676 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1677 0, esc->sc_tail_dmamap->dm_mapsize,
1678 (esc->sc_datain ?
1680 esc->sc_tail_dmamap->dm_xfer_len = 0;
1682 esc->sc_loaded |= ESP_LOADED_TAIL;
1683 return esc->sc_tail_dmamap;
1695 struct esp_softc *esc = (struct esp_softc *)sc;
1701 if ((esc->sc_datain < 0) || (esc->sc_datain > 1)) {
1704 device_xname(sc->sc_dev), esc->sc_datain);
1736 if (map == esc->sc_main_dmamap) {
1738 if ((esc->sc_loaded & ESP_UNLOADED_MAIN) ||
1739 (esc->sc_loaded & ESP_LOADED_MAIN) == 0) {
1744 esc->sc_loaded |= ESP_UNLOADED_MAIN;
1745 } else if (map == esc->sc_tail_dmamap) {
1747 if ((esc->sc_loaded & ESP_UNLOADED_TAIL) ||
1748 (esc->sc_loaded & ESP_LOADED_TAIL) == 0) {
1753 esc->sc_loaded |= ESP_UNLOADED_TAIL;
1763 if (map == esc->sc_main_dmamap) {
1766 } else if (map == esc->sc_tail_dmamap) {
1774 if ((map == esc->sc_tail_dmamap) ||
1775 ((esc->sc_tail_size == 0) && (map == esc->sc_main_dmamap))) {
1781 if (esc->sc_datain) {
1794 bus_dmamap_sync(esc->sc_dma->sc_dmat, map,
1796 (esc->sc_datain ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE));
1805 struct esp_softc *esc = (struct esp_softc *)sc;
1810 if (esc->sc_loaded == 0)
1818 if (esc->sc_datain) {
1844 if (esc->sc_main_dmamap->dm_mapsize) {
1845 if (!esc->sc_datain) {
1847 esc->sc_main_dmamap->dm_mapsize -= ESP_DMA_OVERRUN;
1848 esc->sc_main_dmamap->dm_segs[
1849 esc->sc_main_dmamap->dm_nsegs - 1].ds_len -=
1852 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1853 0, esc->sc_main_dmamap->dm_mapsize,
1854 (esc->sc_datain ?
1856 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_main_dmamap);
1859 esc->sc_main_dmamap->dm_xfer_len);
1864 if (esc->sc_tail_dmamap->dm_mapsize) {
1865 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1866 0, esc->sc_tail_dmamap->dm_mapsize,
1867 (esc->sc_datain ?
1869 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap);
1871 if (esc->sc_datain) {
1872 memcpy(*esc->sc_dmaaddr + esc->sc_begin_size +
1873 esc->sc_main_size, esc->sc_tail,
1874 esc->sc_dmasize -
1875 (esc->sc_begin_size + esc->sc_main_size));
1879 esc->sc_tail_dmamap->dm_xfer_len);
1888 *esc->sc_dmaaddr, *esc->sc_dmalen, esc->sc_dmasize);
1890 esp_hex_dump(*(esc->sc_dmaaddr), esc->sc_dmasize);
1893 esc->sc_tail, &(esc->sc_tailbuf[0]),
1894 esc->sc_tail_size);
1895 esp_hex_dump(&(esc->sc_tailbuf[0]),
1896 sizeof(esc->sc_tailbuf));
1901 esc->sc_main = 0;
1902 esc->sc_main_size = 0;
1903 esc->sc_tail = 0;
1904 esc->sc_tail_size = 0;
1906 esc->sc_datain = -1;
1907 /* esc->sc_dmaaddr = 0; */
1908 /* esc->sc_dmalen = 0; */
1909 /* esc->sc_dmasize = 0; */
1911 esc->sc_loaded = 0;
1913 esc->sc_begin = 0;
1914 esc->sc_begin_size = 0;