Home | History | Annotate | Download | only in dev

Lines Matching refs:esc

236 	struct esp_softc *esc = device_private(self);
237 struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x;
240 if (esc->sc_dma == NULL) {
242 esc->sc_dma = nextdma_findchannel("scsi");
243 if (esc->sc_dma == NULL)
248 nextdma_setconf(esc->sc_dma, shutdown_cb, &esp_dmacb_shutdown);
249 nextdma_setconf(esc->sc_dma, continue_cb, &esp_dmacb_continue);
250 nextdma_setconf(esc->sc_dma, completed_cb, &esp_dmacb_completed);
251 nextdma_setconf(esc->sc_dma, cb_arg, sc);
253 error = bus_dmamap_create(esc->sc_dma->sc_dmat,
255 0, BUS_DMA_ALLOCNOW, &esc->sc_main_dmamap);
261 error = bus_dmamap_create(esc->sc_dma->sc_dmat,
263 0, BUS_DMA_ALLOCNOW, &esc->sc_tail_dmamap);
288 device_xname(esc->sc_dma->sc_dev));
294 struct esp_softc *esc = device_private(self);
295 struct ncr53c9x_softc *sc = &esc->sc_ncr53c9x;
304 esc->sc_bst = ia->ia_bst;
305 if (bus_space_map(esc->sc_bst, NEXT_P_SCSI,
306 ESP_DEVICE_SIZE, 0, &esc->sc_bsh)) {
407 esc->sc_dma = nextdma_findchannel("scsi");
408 if (esc->sc_dma != NULL) {
425 struct esp_softc *esc = (struct esp_softc *)sc;
427 return bus_space_read_1(esc->sc_bst, esc->sc_bsh, reg);
433 struct esp_softc *esc = (struct esp_softc *)sc;
435 bus_space_write_1(esc->sc_bst, esc->sc_bsh, reg, val);
471 struct esp_softc *esc = (struct esp_softc *)sc;
477 (esc->sc_datain ? ESPDCTL_DMARD : 0));
487 struct esp_softc *esc = (struct esp_softc *)sc;
488 struct nextdma_softc *nsc = esc->sc_dma;
538 (esc->sc_datain ? ESPDCTL_DMARD : 0));
550 (esc->sc_datain ?
556 (esc->sc_datain ?
600 esc->sc_datain ? "read" : "write");
628 (esc->sc_datain ? ESPDCTL_DMARD : 0));
631 while (esc->sc_datain != -1)
634 if (esc->sc_dmaaddr) {
657 xfer_len = esc->sc_dmasize - resid;
669 if (esc->sc_begin)
670 xfer_len += esc->sc_begin_size;
671 if (esc->sc_main_dmamap)
673 esc->sc_main_dmamap->dm_xfer_len;
674 if (esc->sc_tail_dmamap)
676 esc->sc_tail_dmamap->dm_xfer_len;
683 (esc->sc_datain ?
687 (esc->sc_datain ?
727 esc->sc_dmasize, (int)xfer_len, resid);
730 *esc->sc_dmaaddr += xfer_len;
731 *esc->sc_dmalen -= xfer_len;
732 esc->sc_dmaaddr = 0;
733 esc->sc_dmalen = 0;
734 esc->sc_dmasize = 0;
753 struct esp_softc *esc = (struct esp_softc *)sc;
777 nextdma_reset(esc->sc_dma);
778 nextdma_init(esc->sc_dma);
780 esc->sc_datain = -1;
781 esc->sc_dmaaddr = 0;
782 esc->sc_dmalen = 0;
783 esc->sc_dmasize = 0;
785 esc->sc_loaded = 0;
787 esc->sc_begin = 0;
788 esc->sc_begin_size = 0;
790 if (esc->sc_main_dmamap->dm_mapsize) {
791 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_main_dmamap);
793 esc->sc_main = 0;
794 esc->sc_main_size = 0;
796 if (esc->sc_tail_dmamap->dm_mapsize) {
797 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap);
799 esc->sc_tail = 0;
800 esc->sc_tail_size = 0;
816 struct esp_softc *esc = (struct esp_softc *)sc;
830 v = (int *)(&(esc->sc_tailbuf[0]));
831 for (i = 0; i < ((sizeof(esc->sc_tailbuf) / 4)); i++)
836 v = (int *)(&(esc->sc_tailbuf[0]));
837 for (i = 0; i < ((sizeof(esc->sc_tailbuf) / 4)); i++)
858 if ((esc->sc_datain != -1) ||
859 (esc->sc_main_dmamap->dm_mapsize != 0) ||
860 (esc->sc_tail_dmamap->dm_mapsize != 0) ||
861 (esc->sc_dmasize != 0)) {
865 device_xname(sc->sc_dev), esc->sc_datain,
866 esc->sc_main_dmamap->dm_mapsize,
867 esc->sc_tail_dmamap->dm_mapsize,
868 esc->sc_dmasize);
881 esc->sc_datain = datain;
882 esc->sc_dmaaddr = addr;
883 esc->sc_dmalen = len;
884 esc->sc_dmasize = *dmasize;
886 esc->sc_loaded = 0;
901 u_long bgn = (u_long)(*esc->sc_dmaaddr);
902 u_long end = bgn + esc->sc_dmasize;
919 if (!esc->sc_datain) {
932 if ((slop_bgn_size+slop_end_size >= esc->sc_dmasize)
934 || (esc->sc_dmasize <= ESP_DMA_MAXTAIL)
938 slop_end_size = esc->sc_dmasize;
943 esc->sc_begin = *esc->sc_dmaaddr;
944 esc->sc_begin_size = slop_bgn_size;
946 esc->sc_begin = 0;
947 esc->sc_begin_size = 0;
953 esc->sc_main = *esc->sc_dmaaddr;
954 esc->sc_main += slop_bgn_size;
955 esc->sc_main_size =
956 (esc->sc_dmasize) - (slop_end_size + slop_bgn_size);
958 if (esc->sc_main_size != 0) {
961 if (!esc->sc_datain ||
962 DMA_ENDALIGNED(esc->sc_main_size +
968 esc->sc_main_size += slop_end_size;
970 if (!esc->sc_datain) {
971 esc->sc_main_size =
973 esc->sc_main +
974 esc->sc_main_size) -
975 esc->sc_main;
979 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
980 esc->sc_main_dmamap,
981 esc->sc_main, esc->sc_main_size,
985 printf("%s: esc->sc_main_dmamap->"
988 esc->sc_main_dmamap->_dm_size);
989 printf("%s: esc->sc_main_dmamap->"
992 esc->sc_main_dmamap->_dm_segcnt);
994 printf("%s: esc->sc_main_dmamap->"
997 esc->sc_main_dmamap->_dm_maxsegsz);
999 printf("%s: esc->sc_main_dmamap->"
1002 esc->sc_main_dmamap->_dm_boundary);
1008 error, esc->sc_main,
1009 esc->sc_main_size);
1011 if (!esc->sc_datain) {
1015 esc->sc_main_dmamap->dm_mapsize +=
1017 esc->sc_main_dmamap->dm_segs[
1018 esc->sc_main_dmamap->dm_nsegs -
1023 bus_dmamap_sync(esc->sc_dma->sc_dmat,
1024 esc->sc_main_dmamap,
1025 0, esc->sc_main_dmamap->dm_mapsize,
1026 (esc->sc_datain ? BUS_DMASYNC_PREREAD :
1028 esc->sc_main_dmamap->dm_xfer_len = 0;
1031 esc->sc_main = 0;
1037 esc->sc_tail = DMA_ENDALIGN(uint8_t *,
1038 esc->sc_tailbuf + slop_end_size) - slop_end_size;
1044 esc->sc_tail = DMA_SCSI_ALIGN(uint8_t *, esc->sc_tail);
1049 esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,
1050 esc->sc_tail + slop_end_size) - esc->sc_tail;
1053 if (!esc->sc_datain) {
1054 esc->sc_tail_size += ESP_DMA_OVERRUN;
1059 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1060 esc->sc_tail_dmamap,
1061 esc->sc_tail, esc->sc_tail_size,
1067 esc->sc_tail,esc->sc_tail_size);
1070 bus_dmamap_sync(esc->sc_dma->sc_dmat,
1071 esc->sc_tail_dmamap, 0,
1072 esc->sc_tail_dmamap->dm_mapsize,
1073 (esc->sc_datain ? BUS_DMASYNC_PREREAD :
1075 esc->sc_tail_dmamap->dm_xfer_len = 0;
1081 esc->sc_begin = *esc->sc_dmaaddr;
1083 ((u_long)esc->sc_begin % DMA_SCSI_ALIGNMENT);
1086 slop_end_size = esc->sc_dmasize - slop_bgn_size;
1088 if (slop_bgn_size < esc->sc_dmasize) {
1091 esc->sc_tail = 0;
1092 esc->sc_tail_size = 0;
1094 esc->sc_begin_size = slop_bgn_size;
1095 esc->sc_main = *esc->sc_dmaaddr;
1096 esc->sc_main += slop_bgn_size;
1097 esc->sc_main_size = DMA_ENDALIGN(uint8_t *,
1098 esc->sc_main + esc->sc_dmasize - slop_bgn_size) -
1099 esc->sc_main;
1101 if (!esc->sc_datain) {
1102 esc->sc_main_size += ESP_DMA_OVERRUN;
1104 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1105 esc->sc_main_dmamap,
1106 esc->sc_main, esc->sc_main_size,
1112 esc->sc_main,esc->sc_main_size);
1115 esc->sc_begin = 0;
1116 esc->sc_begin_size = 0;
1117 esc->sc_main = 0;
1118 esc->sc_main_size = 0;
1121 esc->sc_tail = DMA_ENDALIGN(uint8_t *,
1122 esc->sc_tailbuf + slop_bgn_size) - slop_bgn_size;
1129 esc->sc_tail = DMA_SCSI_ALIGN(void *, esc->sc_tailbuf);
1134 esc->sc_tail_size = DMA_ENDALIGN(uint8_t *,
1135 esc->sc_tail + esc->sc_dmasize) - esc->sc_tail;
1138 if (!esc->sc_datain) {
1139 esc->sc_tail_size += ESP_DMA_OVERRUN;
1144 error = bus_dmamap_load(esc->sc_dma->sc_dmat,
1145 esc->sc_tail_dmamap,
1146 esc->sc_tail, esc->sc_tail_size,
1152 esc->sc_tail, esc->sc_tail_size);
1160 *esc->sc_dmaaddr, esc->sc_dmasize,
1161 esc->sc_begin, esc->sc_begin_size,
1162 esc->sc_main, esc->sc_main_size,
1163 esc->sc_tail, esc->sc_tail_size));
1174 struct esp_softc *esc = (struct esp_softc *)sc;
1180 device_xname(sc->sc_dev), esc->sc_datain);
1184 device_xname(sc->sc_dev), esc->sc_loaded);
1188 if (esc->sc_dmaaddr != 0) {
1190 device_xname(sc->sc_dev), *esc->sc_dmaaddr);
1197 if (esc->sc_dmalen) {
1199 device_xname(sc->sc_dev), *esc->sc_dmalen);
1207 device_xname(sc->sc_dev), esc->sc_dmasize);
1213 esc->sc_begin, esc->sc_begin_size);
1218 device_xname(sc->sc_dev), esc->sc_main, esc->sc_main_size);
1222 if (esc->sc_main)
1226 bus_dmamap_t map = esc->sc_main_dmamap;
1245 device_xname(sc->sc_dev), esc->sc_tail, esc->sc_tail_size);
1249 if (esc->sc_tail)
1253 bus_dmamap_t map = esc->sc_tail_dmamap;
1284 struct esp_softc *esc = (struct esp_softc *)sc;
1285 struct nextdma_softc *nsc = esc->sc_dma;
1304 device_xname(sc->sc_dev), esc->sc_datain));
1323 if (esc->sc_dmasize == 0) {
1331 if ((esc->sc_begin_size == 0) &&
1332 (esc->sc_main_dmamap->dm_mapsize == 0) &&
1333 (esc->sc_tail_dmamap->dm_mapsize == 0)) {
1342 if (esc->sc_datain) {
1345 device_xname(sc->sc_dev), esc->sc_begin_size));
1346 for (i = 0; i < esc->sc_begin_size; i++) {
1347 esc->sc_begin[i] = NCR_READ_REG(sc, NCR_FIFO);
1348 DPRINTF((" %02x", esc->sc_begin[i] & 0xff));
1354 device_xname(sc->sc_dev), esc->sc_begin_size));
1355 for (i = 0; i < esc->sc_begin_size; i++) {
1356 NCR_WRITE_REG(sc, NCR_FIFO, esc->sc_begin[i]);
1357 DPRINTF((" %02x",esc->sc_begin[i] & 0xff));
1362 if (esc->sc_main_dmamap->dm_mapsize != 0) {
1363 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1364 0, esc->sc_main_dmamap->dm_mapsize,
1365 (esc->sc_datain ?
1367 esc->sc_main_dmamap->dm_xfer_len = 0;
1370 if (esc->sc_tail_dmamap->dm_mapsize != 0) {
1372 if (!esc->sc_datain) {
1373 memcpy(esc->sc_tail, *esc->sc_dmaaddr +
1374 esc->sc_begin_size+esc->sc_main_size,
1375 esc->sc_dmasize -
1376 (esc->sc_begin_size + esc->sc_main_size));
1378 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1379 0, esc->sc_tail_dmamap->dm_mapsize,
1380 (esc->sc_datain ?
1382 esc->sc_tail_dmamap->dm_xfer_len = 0;
1386 nextdma_start(nsc, (esc->sc_datain ? DMACSR_SETREAD : DMACSR_SETWRITE));
1388 if (esc->sc_datain) {
1399 if (esc->sc_begin_size != 0) {
1401 ndtrace_addc('A' + esc->sc_begin_size);
1405 if (esc->sc_main_size != 0) {
1407 ndtrace_addc('0' + esc->sc_main_dmamap->dm_nsegs);
1411 if (esc->sc_tail_size != 0) {
1413 ndtrace_addc('A' + esc->sc_tail_size);
1425 struct esp_softc *esc = (struct esp_softc *)sc;
1427 nextdma_print(esc->sc_dma);
1439 struct esp_softc *esc = (struct esp_softc *)sc;
1443 r = !nextdma_finished(esc->sc_dma);
1445 r = (esc->sc_dmaaddr != NULL);
1461 struct esp_softc *esc = (struct esp_softc *)sc;
1462 struct nextdma_softc *nsc = esc->sc_dma;
1710 struct esp_softc *esc = (struct esp_softc *)sc;
1716 if (esc->sc_datain < 0 || esc->sc_datain > 1) {
1719 device_xname(sc->sc_dev), esc->sc_datain);
1723 if ((esc->sc_loaded & ESP_LOADED_MAIN) == 0 &&
1724 esc->sc_main_dmamap->dm_mapsize != 0) {
1727 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1728 0, esc->sc_main_dmamap->dm_mapsize,
1729 (esc->sc_datain ?
1731 esc->sc_main_dmamap->dm_xfer_len = 0;
1733 esc->sc_loaded |= ESP_LOADED_MAIN;
1734 return esc->sc_main_dmamap;
1737 if ((esc->sc_loaded & ESP_LOADED_TAIL) == 0 &&
1738 esc->sc_tail_dmamap->dm_mapsize != 0) {
1741 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1742 0, esc->sc_tail_dmamap->dm_mapsize,
1743 (esc->sc_datain ?
1745 esc->sc_tail_dmamap->dm_xfer_len = 0;
1747 esc->sc_loaded |= ESP_LOADED_TAIL;
1748 return esc->sc_tail_dmamap;
1760 struct esp_softc *esc = (struct esp_softc *)sc;
1766 if (esc->sc_datain < 0 || esc->sc_datain > 1) {
1769 device_xname(sc->sc_dev), esc->sc_datain);
1801 if (map == esc->sc_main_dmamap) {
1803 if ((esc->sc_loaded & ESP_UNLOADED_MAIN) ||
1804 (esc->sc_loaded & ESP_LOADED_MAIN) == 0) {
1809 esc->sc_loaded |= ESP_UNLOADED_MAIN;
1810 } else if (map == esc->sc_tail_dmamap) {
1812 if ((esc->sc_loaded & ESP_UNLOADED_TAIL) ||
1813 (esc->sc_loaded & ESP_LOADED_TAIL) == 0) {
1818 esc->sc_loaded |= ESP_UNLOADED_TAIL;
1828 if (map == esc->sc_main_dmamap) {
1831 } else if (map == esc->sc_tail_dmamap) {
1839 if ((map == esc->sc_tail_dmamap) ||
1840 ((esc->sc_tail_size == 0) && (map == esc->sc_main_dmamap))) {
1846 if (esc->sc_datain) {
1859 bus_dmamap_sync(esc->sc_dma->sc_dmat, map,
1861 (esc->sc_datain ? BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE));
1870 struct esp_softc *esc = (struct esp_softc *)sc;
1875 if (esc->sc_loaded == 0)
1883 if (esc->sc_datain) {
1909 if (esc->sc_main_dmamap->dm_mapsize != 0) {
1910 if (!esc->sc_datain) {
1912 esc->sc_main_dmamap->dm_mapsize -= ESP_DMA_OVERRUN;
1913 esc->sc_main_dmamap->dm_segs[
1914 esc->sc_main_dmamap->dm_nsegs - 1].ds_len -=
1917 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_main_dmamap,
1918 0, esc->sc_main_dmamap->dm_mapsize,
1919 (esc->sc_datain ?
1921 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_main_dmamap);
1924 esc->sc_main_dmamap->dm_xfer_len);
1928 if (esc->sc_tail_dmamap->dm_mapsize != 0) {
1929 bus_dmamap_sync(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap,
1930 0, esc->sc_tail_dmamap->dm_mapsize,
1931 (esc->sc_datain ?
1933 bus_dmamap_unload(esc->sc_dma->sc_dmat, esc->sc_tail_dmamap);
1935 if (esc->sc_datain) {
1936 memcpy(*esc->sc_dmaaddr + esc->sc_begin_size +
1937 esc->sc_main_size, esc->sc_tail,
1938 esc->sc_dmasize -
1939 (esc->sc_begin_size + esc->sc_main_size));
1943 esc->sc_tail_dmamap->dm_xfer_len);
1951 *esc->sc_dmaaddr, *esc->sc_dmalen, esc->sc_dmasize);
1953 esp_hex_dump(*(esc->sc_dmaaddr), esc->sc_dmasize);
1956 esc->sc_tail, &(esc->sc_tailbuf[0]),
1957 esc->sc_tail_size);
1958 esp_hex_dump(&(esc->sc_tailbuf[0]),
1959 sizeof(esc->sc_tailbuf));
1964 esc->sc_main = 0;
1965 esc->sc_main_size = 0;
1966 esc->sc_tail = 0;
1967 esc->sc_tail_size = 0;
1969 esc->sc_datain = -1;
1971 esc->sc_dmaaddr = 0;
1972 esc->sc_dmalen = 0;
1973 esc->sc_dmasize = 0;
1976 esc->sc_loaded = 0;
1978 esc->sc_begin = 0;
1979 esc->sc_begin_size = 0;