Deleted Added
full compact
101c101
< __FBSDID("$FreeBSD: head/sys/dev/esp/ncr53c9x.c 226381 2011-10-15 09:29:43Z marius $");
---
> __FBSDID("$FreeBSD: head/sys/dev/esp/ncr53c9x.c 226947 2011-10-30 21:17:42Z marius $");
125a126,127
> devclass_t esp_devclass;
>
182,183c184
< if ((sc->sc_cfg2 & NCRCFG2_FE) || \
< (sc->sc_rev == NCR_VARIANT_FAS366)) \
---
> if ((sc->sc_features & NCR_F_LARGEXFER) != 0) \
393a395
> callout_init_mtx(&ecb->ch, &sc->sc_lock, 0);
451a454
> cam_sim_free(sc->sc_sim, TRUE);
455d457
< cam_sim_free(sc->sc_sim, TRUE);
506a509,510
> if ((sc->sc_cfg2 & NCRCFG2_FE) != 0)
> sc->sc_features |= NCR_F_LARGEXFER;
517,518c521,522
< sc->sc_features |=
< NCR_F_HASCFG3 | NCR_F_FASTSCSI | NCR_F_SELATN3;
---
> sc->sc_features |= NCR_F_HASCFG3 | NCR_F_FASTSCSI |
> NCR_F_SELATN3 | NCR_F_LARGEXFER;
714,716d717
< if (sc->sc_glue->gl_clear_latched_intr != NULL)
< (*sc->sc_glue->gl_clear_latched_intr)(sc);
<
809c810
< int clen, selatn3, selatns;
---
> int clen, error, selatn3, selatns;
890c891,898
< NCRDMA_SETUP(sc, &sc->sc_cmdp, &sc->sc_cmdlen, 0, &dmasize);
---
> error = NCRDMA_SETUP(sc, &sc->sc_cmdp, &sc->sc_cmdlen, 0,
> &dmasize);
> if (error != 0) {
> sc->sc_cmdlen = 0;
> sc->sc_cmdp = NULL;
> goto cmd;
> }
>
895,896c903
< /* if (sc->sc_rev != NCR_VARIANT_FAS366) */
< NCRCMD(sc, NCRCMD_NOP | NCRCMD_DMA);
---
> NCRCMD(sc, NCRCMD_NOP | NCRCMD_DMA);
908a916
> cmd:
992,993c1000
< xpt_done(ccb);
< return;
---
> break;
997,998c1004
< xpt_done(ccb);
< return;
---
> break;
1012,1013d1017
< cpi->bus_id = 0;
< cpi->base_transfer_speed = 3300;
1015c1019
< strncpy(cpi->hba_vid, "Sun", HBA_IDLEN);
---
> strncpy(cpi->hba_vid, "NCR", HBA_IDLEN);
1018,1019c1022,1023
< cpi->transport = XPORT_SPI;
< cpi->transport_version = 2;
---
> cpi->bus_id = 0;
> cpi->base_transfer_speed = 3300;
1021a1026,1028
> cpi->transport = XPORT_SPI;
> cpi->transport_version = 2;
> cpi->maxio = sc->sc_maxxfer;
1023,1024c1030
< xpt_done(ccb);
< return;
---
> break;
1067,1068c1073
< xpt_done(ccb);
< return;
---
> break;
1073,1074c1078
< xpt_done(ccb);
< return;
---
> break;
1079,1080c1083
< xpt_done(ccb);
< return;
---
> break;
1087,1088c1090
< xpt_done(ccb);
< return;
---
> goto done;
1100,1101c1102
< xpt_done(ccb);
< return;
---
> goto done;
1130c1131
< break;
---
> return;
1168,1169c1169
< xpt_done(ccb);
< return;
---
> break;
1175,1176d1174
< xpt_done(ccb);
< return;
1177a1176,1178
>
> done:
> xpt_done(ccb);
2033,2034c2034,2035
< printf("unrecognized MESSAGE EXTENDED;"
< " sending REJECT\n");
---
> printf("unrecognized MESSAGE EXTENDED 0x%x;"
> " sending REJECT\n", sc->sc_imess[2]);
2042c2043,2044
< printf("unrecognized MESSAGE; sending REJECT\n");
---
> printf("unrecognized MESSAGE 0x%x; sending REJECT\n",
> sc->sc_imess[0]);
2111a2114
> int error;
2249,2256c2252,2253
< if (sc->sc_rev == NCR_VARIANT_FAS366) {
< /*
< * XXX FIFO size
< */
< ncr53c9x_flushfifo(sc);
< ncr53c9x_wrfifo(sc, sc->sc_omp, sc->sc_omlen);
< NCRCMD(sc, NCRCMD_TRANS);
< } else {
---
>
> if (sc->sc_rev != NCR_VARIANT_FAS366) {
2259c2256,2259
< NCRDMA_SETUP(sc, &sc->sc_omp, &sc->sc_omlen, 0, &size);
---
> error = NCRDMA_SETUP(sc, &sc->sc_omp, &sc->sc_omlen, 0, &size);
> if (error != 0)
> goto cmd;
>
2266a2267
> return;
2267a2269,2276
>
> cmd:
> /*
> * XXX FIFO size
> */
> ncr53c9x_flushfifo(sc);
> ncr53c9x_wrfifo(sc, sc->sc_omp, sc->sc_omlen);
> NCRCMD(sc, NCRCMD_TRANS);
2302c2311
< int i, nfifo;
---
> int error, i, nfifo;
2977c2986
< NCRDMA_SETUP(sc, &sc->sc_cmdp, &sc->sc_cmdlen,
---
> error = NCRDMA_SETUP(sc, &sc->sc_cmdp, &sc->sc_cmdlen,
2978a2988,2993
> if (error != 0) {
> sc->sc_cmdlen = 0;
> sc->sc_cmdp = NULL;
> goto cmd;
> }
>
2988,2991c3003,3004
< } else {
< ncr53c9x_wrfifo(sc, (uint8_t *)&ecb->cmd.cmd,
< ecb->clen);
< NCRCMD(sc, NCRCMD_TRANS);
---
> sc->sc_prevphase = COMMAND_PHASE;
> break;
2992a3006,3008
> cmd:
> ncr53c9x_wrfifo(sc, (uint8_t *)&ecb->cmd.cmd, ecb->clen);
> NCRCMD(sc, NCRCMD_TRANS);
2997a3014
> sc->sc_prevphase = DATA_OUT_PHASE;
3000,3001c3017
< NCRDMA_SETUP(sc, &sc->sc_dp, &sc->sc_dleft, 0, &size);
< sc->sc_prevphase = DATA_OUT_PHASE;
---
> error = NCRDMA_SETUP(sc, &sc->sc_dp, &sc->sc_dleft, 0, &size);
3005a3022
> sc->sc_prevphase = DATA_IN_PHASE;
3009,3011c3026,3047
< NCRDMA_SETUP(sc, &sc->sc_dp, &sc->sc_dleft, 1, &size);
< sc->sc_prevphase = DATA_IN_PHASE;
< setup_xfer:
---
> error = NCRDMA_SETUP(sc, &sc->sc_dp, &sc->sc_dleft, 1, &size);
> setup_xfer:
> if (error != 0) {
> switch (error) {
> case EFBIG:
> ecb->ccb->ccb_h.status |= CAM_REQ_TOO_BIG;
> break;
> case EINPROGRESS:
> panic("%s: cannot deal with deferred DMA",
> __func__);
> case EINVAL:
> ecb->ccb->ccb_h.status |= CAM_REQ_INVALID;
> break;
> case ENOMEM:
> ecb->ccb->ccb_h.status |= CAM_REQUEUE_REQ;
> break;
> default:
> ecb->ccb->ccb_h.status |= CAM_REQ_CMP_ERR;
> }
> goto finish;
> }
>