Lines Matching refs:mi

104 mscp_getcp(struct mscp_softc *mi, int canwait)  in mscp_getcp()  argument
106 #define mri (&mi->mi_cmd) in mscp_getcp()
116 if (mi->mi_credits <= MSCP_MINCREDITS) { in mscp_getcp()
121 mi->mi_wantcredits = 1; in mscp_getcp()
122 (void) tsleep(&mi->mi_wantcredits, PCMD, "mscpwcrd", 0); in mscp_getcp()
131 mi->mi_wantcmd = 1; in mscp_getcp()
132 (void) tsleep(&mi->mi_wantcmd, PCMD, "mscpwcmd", 0); in mscp_getcp()
135 mi->mi_credits--; in mscp_getcp()
166 mscp_dorsp(struct mscp_softc *mi) in mscp_dorsp() argument
169 struct mscp_device *me = mi->mi_me; in mscp_dorsp()
170 struct mscp_ctlr *mc = mi->mi_mc; in mscp_dorsp()
179 nextrsp = mi->mi_rsp.mri_next; in mscp_dorsp()
181 if (mi->mi_rsp.mri_desc[nextrsp] & MSCP_OWN) { in mscp_dorsp()
187 mi->mi_rsp.mri_next = nextrsp; in mscp_dorsp()
188 if (mi->mi_wantcredits && mi->mi_credits > MSCP_MINCREDITS) { in mscp_dorsp()
189 mi->mi_wantcredits = 0; in mscp_dorsp()
190 wakeup((void *) &mi->mi_wantcredits); in mscp_dorsp()
195 mp = &mi->mi_rsp.mri_ring[nextrsp]; in mscp_dorsp()
196 mi->mi_credits += MSCP_CREDITS(mp->mscp_msgtc); in mscp_dorsp()
203 mi->mi_flags |= MSC_READY; in mscp_dorsp()
206 device_xname(mi->mi_dev), mp->mscp_status); in mscp_dorsp()
216 if (mp->mscp_unit >= mi->mi_driveno) { /* Must expand drive table */ in mscp_dorsp()
221 if (mi->mi_driveno) { in mscp_dorsp()
222 memcpy(tmp, mi->mi_dp, mi->mi_driveno * sizeof(tmp[0])); in mscp_dorsp()
223 free(mi->mi_dp, M_DEVBUF); in mscp_dorsp()
225 mi->mi_driveno = tmpno; in mscp_dorsp()
226 mi->mi_dp = tmp; in mscp_dorsp()
229 drive = mi->mi_dp[mp->mscp_unit]; in mscp_dorsp()
237 (*me->me_dgram)(drive, mp, mi); in mscp_dorsp()
246 device_xname(mi->mi_dev), mp->mscp_unit, in mscp_dorsp()
304 mutex_spin_enter(&mi->mi_mtx); in mscp_dorsp()
306 mw = SLIST_FIRST(&mi->mi_freelist); in mscp_dorsp()
308 aprint_error_dev(mi->mi_dev, in mscp_dorsp()
310 mutex_spin_exit(&mi->mi_mtx); in mscp_dorsp()
312 SLIST_REMOVE_HEAD(&mi->mi_freelist, mw_list); in mscp_dorsp()
313 mutex_spin_exit(&mi->mi_mtx); in mscp_dorsp()
315 mw->mw_mi = mi; in mscp_dorsp()
318 workqueue_enqueue(mi->mi_wq, in mscp_dorsp()
379 mxi = &mi->mi_xi[mp->mscp_cmdref]; in mscp_dorsp()
421 bus_dmamap_unload(mi->mi_dmat, mxi->mxi_dmam); in mscp_dorsp()
423 (*mc->mc_ctlrdone)(device_parent(mi->mi_dev)); in mscp_dorsp()
427 mi->mi_mxiuse |= (1 << mp->mscp_cmdref); in mscp_dorsp()
471 mi->mi_rsp.mri_desc[nextrsp] |= MSCP_OWN; in mscp_dorsp()
472 nextrsp = (nextrsp + 1) % mi->mi_rsp.mri_size; in mscp_dorsp()
482 mscp_requeue(struct mscp_softc *mi) in mscp_requeue() argument
498 struct mscp_softc *mi = mw->mw_mi; in mscp_worker() local
503 struct mscp_device *me = mi->mi_me; in mscp_worker()
512 da.da_typ = mi->mi_type; in mscp_worker()
514 config_found(mi->mi_dev, (void *)&da, mscp_print, CFARGS_NONE); in mscp_worker()
516 mutex_spin_enter(&mi->mi_mtx); in mscp_worker()
518 mutex_spin_exit(&mi->mi_mtx); in mscp_worker()