Lines Matching refs:isp
125 ispsoftc_t *isp = &sbc->sbus_isp; in isp_sbus_attach() local
127 isp->isp_osinfo.dev = self; in isp_sbus_attach()
131 isp->isp_nchan = isp->isp_osinfo.adapter.adapt_nchannels = 1; in isp_sbus_attach()
188 isp->isp_mdvec = &sbc->sbus_mdvec; in isp_sbus_attach()
189 isp->isp_bustype = ISP_BT_SBUS; in isp_sbus_attach()
190 isp->isp_type = ISP_HA_SCSI_UNKNOWN; in isp_sbus_attach()
191 isp->isp_param = &sbc->sbus_dev; in isp_sbus_attach()
192 isp->isp_dmatag = sa->sa_dmatag; in isp_sbus_attach()
193 ISP_MEMZERO(isp->isp_param, sizeof (sdparam)); in isp_sbus_attach()
194 isp->isp_osinfo.chan = &sbc->sbus_chan; in isp_sbus_attach()
210 isp->isp_dblev = ISP_LOGDEFAULT; in isp_sbus_attach()
212 isp->isp_dblev = ISP_LOGWARN|ISP_LOGERR; in isp_sbus_attach()
214 isp->isp_dblev |= ISP_LOGCONFIG|ISP_LOGINFO; in isp_sbus_attach()
216 isp->isp_dblev |= ISP_LOGDEBUG1|ISP_LOGDEBUG2; in isp_sbus_attach()
219 isp->isp_dblev |= ISP_LOGDEBUG0; in isp_sbus_attach()
223 isp->isp_confopts = device_cfdata(self)->cf_flags; in isp_sbus_attach()
224 SDPARAM(isp, 0)->role = ISP_DEFAULT_ROLES; in isp_sbus_attach()
229 isp->isp_confopts |= ISP_CFG_NONVRAM; in isp_sbus_attach()
236 SDPARAM(isp, 0)->isp_ptisp = 1; in isp_sbus_attach()
238 ISP_LOCK(isp); in isp_sbus_attach()
239 isp_reset(isp, 1); in isp_sbus_attach()
240 if (isp->isp_state != ISP_RESETSTATE) { in isp_sbus_attach()
241 ISP_UNLOCK(isp); in isp_sbus_attach()
244 ISP_ENABLE_INTS(isp); in isp_sbus_attach()
245 isp_init(isp); in isp_sbus_attach()
246 if (isp->isp_state != ISP_INITSTATE) { in isp_sbus_attach()
247 isp_uninit(isp); in isp_sbus_attach()
248 ISP_UNLOCK(isp); in isp_sbus_attach()
255 ISP_UNLOCK(isp); in isp_sbus_attach()
256 isp_attach(isp); in isp_sbus_attach()
261 isp_sbus_reset0(ispsoftc_t *isp) in isp_sbus_reset0() argument
263 ISP_DISABLE_INTS(isp); in isp_sbus_reset0()
267 isp_sbus_reset1(ispsoftc_t *isp) in isp_sbus_reset1() argument
269 ISP_ENABLE_INTS(isp); in isp_sbus_reset1()
277 ispsoftc_t *isp = arg; in isp_sbus_intr() local
279 if (ISP_READ_ISR(isp, &isr, &sema, &mbox) == 0) { in isp_sbus_intr()
280 isp->isp_intbogus++; in isp_sbus_intr()
285 isp_intr(isp, isr, sema, mbox); in isp_sbus_intr()
299 isp_sbus_rd_isr(ispsoftc_t *isp, uint32_t *isrp, in isp_sbus_rd_isr() argument
302 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp; in isp_sbus_rd_isr()
306 isr = BXR2(sbc, IspVirt2Off(isp, BIU_ISR)); in isp_sbus_rd_isr()
307 sema = BXR2(sbc, IspVirt2Off(isp, BIU_SEMA)); in isp_sbus_rd_isr()
308 isp_prt(isp, ISP_LOGDEBUG3, "ISR 0x%x SEMA 0x%x", isr, sema); in isp_sbus_rd_isr()
309 isr &= INT_PENDING_MASK(isp); in isp_sbus_rd_isr()
316 *mbp = BXR2(sbc, IspVirt2Off(isp, OUTMAILBOX0)); in isp_sbus_rd_isr()
322 isp_sbus_rd_reg(ispsoftc_t *isp, int regoff) in isp_sbus_rd_reg() argument
324 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp; in isp_sbus_rd_reg()
331 isp_sbus_wr_reg(ispsoftc_t *isp, int regoff, uint32_t val) in isp_sbus_wr_reg() argument
333 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp; in isp_sbus_wr_reg()
340 isp_sbus_mbxdma(ispsoftc_t *isp) in isp_sbus_mbxdma() argument
342 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp; in isp_sbus_mbxdma()
348 if (isp->isp_rquest_dma) in isp_sbus_mbxdma()
351 n = isp->isp_maxcmds * sizeof (isp_hdl_t); in isp_sbus_mbxdma()
352 isp->isp_xflist = (isp_hdl_t *) malloc(n, M_DEVBUF, M_WAITOK); in isp_sbus_mbxdma()
353 if (isp->isp_xflist == NULL) { in isp_sbus_mbxdma()
354 isp_prt(isp, ISP_LOGERR, "cannot alloc xflist array"); in isp_sbus_mbxdma()
357 ISP_MEMZERO(isp->isp_xflist, n); in isp_sbus_mbxdma()
358 for (n = 0; n < isp->isp_maxcmds - 1; n++) { in isp_sbus_mbxdma()
359 isp->isp_xflist[n].cmd = &isp->isp_xflist[n+1]; in isp_sbus_mbxdma()
361 isp->isp_xffree = isp->isp_xflist; in isp_sbus_mbxdma()
362 n = sizeof (bus_dmamap_t) * isp->isp_maxcmds; in isp_sbus_mbxdma()
365 free(isp->isp_xflist, M_DEVBUF); in isp_sbus_mbxdma()
366 isp->isp_xflist = NULL; in isp_sbus_mbxdma()
367 isp_prt(isp, ISP_LOGERR, "cannot alloc dmamap array"); in isp_sbus_mbxdma()
370 for (i = 0; i < isp->isp_maxcmds; i++) { in isp_sbus_mbxdma()
372 if (bus_dmamap_create(isp->isp_dmatag, MAXPHYS, 1, MAXPHYS, in isp_sbus_mbxdma()
374 isp_prt(isp, ISP_LOGERR, "cmd DMA maps create error"); in isp_sbus_mbxdma()
378 if (i < isp->isp_maxcmds) { in isp_sbus_mbxdma()
380 bus_dmamap_destroy(isp->isp_dmatag, in isp_sbus_mbxdma()
383 free(isp->isp_xflist, M_DEVBUF); in isp_sbus_mbxdma()
385 isp->isp_xflist = NULL; in isp_sbus_mbxdma()
394 len = ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp)); in isp_sbus_mbxdma()
395 if (bus_dmamem_alloc(isp->isp_dmatag, len, 0, 0, &reqseg, 1, &reqrs, in isp_sbus_mbxdma()
400 if (bus_dmamem_map(isp->isp_dmatag, &reqseg, reqrs, len, in isp_sbus_mbxdma()
401 (void *)&isp->isp_rquest, BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) { in isp_sbus_mbxdma()
405 if (bus_dmamap_create(isp->isp_dmatag, len, 1, len, 1 << 24, in isp_sbus_mbxdma()
406 BUS_DMA_NOWAIT, &isp->isp_rqdmap) != 0) { in isp_sbus_mbxdma()
410 if (bus_dmamap_load(isp->isp_dmatag, isp->isp_rqdmap, in isp_sbus_mbxdma()
411 isp->isp_rquest, len, NULL, BUS_DMA_NOWAIT) != 0) { in isp_sbus_mbxdma()
415 isp->isp_rquest_dma = isp->isp_rqdmap->dm_segs[0].ds_addr; in isp_sbus_mbxdma()
417 len = ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp)); in isp_sbus_mbxdma()
418 if (bus_dmamem_alloc(isp->isp_dmatag, len, 0, 0, &rspseg, 1, &rsprs, in isp_sbus_mbxdma()
423 if (bus_dmamem_map(isp->isp_dmatag, &rspseg, rsprs, len, in isp_sbus_mbxdma()
424 (void *)&isp->isp_result, BUS_DMA_NOWAIT|BUS_DMA_COHERENT)) { in isp_sbus_mbxdma()
428 if (bus_dmamap_create(isp->isp_dmatag, len, 1, len, 1 << 24, in isp_sbus_mbxdma()
429 BUS_DMA_NOWAIT, &isp->isp_rsdmap) != 0) { in isp_sbus_mbxdma()
433 if (bus_dmamap_load(isp->isp_dmatag, isp->isp_rsdmap, in isp_sbus_mbxdma()
434 isp->isp_result, len, NULL, BUS_DMA_NOWAIT) != 0) { in isp_sbus_mbxdma()
437 isp->isp_result_dma = isp->isp_rsdmap->dm_segs[0].ds_addr; in isp_sbus_mbxdma()
442 isp_prt(isp, ISP_LOGERR, "Mailbox DMA Setup Failure"); in isp_sbus_mbxdma()
445 bus_dmamap_unload(isp->isp_dmatag, isp->isp_rsdmap); in isp_sbus_mbxdma()
448 bus_dmamap_destroy(isp->isp_dmatag, isp->isp_rsdmap); in isp_sbus_mbxdma()
451 bus_dmamem_unmap(isp->isp_dmatag, in isp_sbus_mbxdma()
452 isp->isp_result, ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp))); in isp_sbus_mbxdma()
455 bus_dmamem_free(isp->isp_dmatag, &rspseg, rsprs); in isp_sbus_mbxdma()
459 bus_dmamap_unload(isp->isp_dmatag, isp->isp_rqdmap); in isp_sbus_mbxdma()
462 bus_dmamap_destroy(isp->isp_dmatag, isp->isp_rqdmap); in isp_sbus_mbxdma()
465 bus_dmamem_unmap(isp->isp_dmatag, in isp_sbus_mbxdma()
466 isp->isp_rquest, ISP_QUEUE_SIZE(RQUEST_QUEUE_LEN(isp))); in isp_sbus_mbxdma()
469 bus_dmamem_free(isp->isp_dmatag, &reqseg, reqrs); in isp_sbus_mbxdma()
472 for (i = 0; i < isp->isp_maxcmds; i++) { in isp_sbus_mbxdma()
473 bus_dmamap_destroy(isp->isp_dmatag, sbc->sbus_dmamap[i]); in isp_sbus_mbxdma()
476 free(isp->isp_xflist, M_DEVBUF); in isp_sbus_mbxdma()
477 isp->isp_xflist = NULL; in isp_sbus_mbxdma()
488 isp_sbus_dmasetup(struct ispsoftc *isp, struct scsipi_xfer *xs, void *arg) in isp_sbus_dmasetup() argument
490 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *)isp; in isp_sbus_dmasetup()
497 hidx = isp_handle_index(isp, rq->req_handle); in isp_sbus_dmasetup()
520 error = bus_dmamap_load(isp->isp_dmatag, dmap, xs->data, xs->datalen, in isp_sbus_dmasetup()
523 isp_prt(isp, ISP_LOGWARN, "unable to load DMA (%d)", error); in isp_sbus_dmasetup()
533 bus_dmamap_sync(isp->isp_dmatag, dmap, 0, dmap->dm_mapsize, flg2); in isp_sbus_dmasetup()
536 if (isp_send_cmd(isp, rq, dm_segs, nsegs, xs->datalen, ddir) != CMD_QUEUED) { in isp_sbus_dmasetup()
544 isp_sbus_dmateardown(ispsoftc_t *isp, XS_T *xs, uint32_t handle) in isp_sbus_dmateardown() argument
546 struct isp_sbussoftc *sbc = (struct isp_sbussoftc *) isp; in isp_sbus_dmateardown()
550 hidx = isp_handle_index(isp, handle); in isp_sbus_dmateardown()
552 isp_xs_prt(isp, xs, ISP_LOGERR, "bad handle on teardown"); in isp_sbus_dmateardown()
556 bus_dmamap_sync(isp->isp_dmatag, dmap, 0, in isp_sbus_dmateardown()
559 bus_dmamap_unload(isp->isp_dmatag, dmap); in isp_sbus_dmateardown()