Lines Matching defs:vbus_ext

78 	PVBUS_EXT vbus_ext;
117 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK |
119 vbus_ext->ext_type = EXT_TYPE_VBUS;
120 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
124 ldm_for_each_vbus(vbus, vbus_ext) {
126 hba->vbus_ext = vbus_ext;
127 hba->next = vbus_ext->hba_list;
128 vbus_ext->hba_list = hba;
151 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
158 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
161 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
163 for (f=vbus_ext->freelist_head; f; f=f->next) {
173 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
203 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
209 static void hpt_free_mem(PVBUS_EXT vbus_ext)
216 for (f=vbus_ext->freelist_head; f; f=f->next) {
227 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
232 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
247 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
252 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
256 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
260 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
266 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
290 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
298 hpt_assert_vbus_locked(vbus_ext);
322 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
337 static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
338 static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
340 PVBUS vbus = (PVBUS)vbus_ext->vbus;
347 hpt_stop_tasks(vbus_ext);
348 hpt_lock_vbus(vbus_ext);
349 vbus_ext->worker.ta_context = 0;
356 if (hpt_flush_vdev(vbus_ext, vd))
357 hpt_flush_vdev(vbus_ext, vd);
362 hpt_unlock_vbus(vbus_ext);
366 for (hba=vbus_ext->hba_list; hba; hba=hba->next)
369 hpt_free_mem(vbus_ext);
371 while ((hba=vbus_ext->hba_list)) {
372 vbus_ext->hba_list = hba->next;
376 callout_drain(&vbus_ext->timer);
377 mtx_destroy(&vbus_ext->lock);
378 free(vbus_ext, M_DEVBUF);
382 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
386 tasks = vbus_ext->tasks;
387 vbus_ext->tasks = 0;
393 t->func(vbus_ext->vbus, t->data);
397 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
399 if(vbus_ext){
400 hpt_lock_vbus(vbus_ext);
401 __hpt_do_tasks(vbus_ext);
402 hpt_unlock_vbus(vbus_ext);
411 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
413 POS_CMDEXT p = vbus_ext->cmdext_list;
415 vbus_ext->cmdext_list = p->next;
421 p->next = p->vbus_ext->cmdext_list;
422 p->vbus_ext->cmdext_list = p;
432 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
520 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
523 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
526 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
563 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
567 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
576 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
578 PVBUS vbus = (PVBUS)vbus_ext->vbus;
734 pCmd->priv = ext = cmdext_get(vbus_ext);
748 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
871 os_get_vbus_seq(vbus_ext), vd->target_id);
1063 pCmd->priv = ext = cmdext_get(vbus_ext);
1071 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
1098 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
1102 hpt_assert_vbus_locked(vbus_ext);
1106 hpt_scsi_io(vbus_ext, ccb);
1110 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
1163 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
1164 hpt_lock_vbus(vbus_ext);
1165 ldm_intr((PVBUS)vbus_ext->vbus);
1166 hpt_unlock_vbus(vbus_ext);
1171 PVBUS_EXT vbus_ext = cam_sim_softc(sim);
1172 hpt_assert_vbus_locked(vbus_ext);
1173 ldm_intr((PVBUS)vbus_ext->vbus);
1199 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
1205 hpt_lock_vbus(vbus_ext);
1206 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
1209 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
1211 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
1212 __hpt_do_tasks(vbus_ext);
1217 hpt_unlock_vbus(vbus_ext);
1223 PVBUS_EXT vbus_ext;
1225 ldm_for_each_vbus(vbus, vbus_ext) {
1226 __hpt_do_ioctl(vbus_ext, ioctl_args);
1267 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
1296 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
1301 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
1309 __hpt_stop_tasks(vbus_ext, ids[i]);
1333 PVBUS_EXT vbus_ext;
1342 ldm_for_each_vbus(vbus, vbus_ext) {
1343 if (hpt_alloc_mem(vbus_ext)) {
1357 ldm_for_each_vbus(vbus, vbus_ext) {
1359 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1360 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1361 if (hpt_init_vbus(vbus_ext)) {
1368 ldm_for_each_vbus(vbus, vbus_ext) {
1383 &vbus_ext->lock, /* lockfuncarg */
1384 &vbus_ext->io_dmat /* tag */))
1391 ext->vbus_ext = vbus_ext;
1392 ext->next = vbus_ext->cmdext_list;
1393 vbus_ext->cmdext_list = ext;
1395 if (bus_dmamap_create(vbus_ext->io_dmat, 0, &ext->dma_map)) {
1399 callout_init_mtx(&ext->timeout, &vbus_ext->lock, 0);
1407 hpt_lock_vbus(vbus_ext);
1408 vbus_ext->sim = cam_sim_alloc(hpt_action, hpt_poll, driver_name,
1409 vbus_ext, unit_number, &vbus_ext->lock,
1412 if (!vbus_ext->sim) {
1415 hpt_unlock_vbus(vbus_ext);
1419 if (xpt_bus_register(vbus_ext->sim, NULL, 0) != CAM_SUCCESS) {
1421 cam_sim_free(vbus_ext->sim, /*free devq*/ TRUE);
1422 vbus_ext->sim = NULL;
1426 if (xpt_create_path(&vbus_ext->path, /*periph */ NULL,
1427 cam_sim_path(vbus_ext->sim), CAM_TARGET_WILDCARD,
1431 xpt_bus_deregister(cam_sim_path(vbus_ext->sim));
1432 cam_sim_free(vbus_ext->sim, /*free_devq*/TRUE);
1433 hpt_unlock_vbus(vbus_ext);
1434 vbus_ext->sim = NULL;
1437 hpt_unlock_vbus(vbus_ext);
1440 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1444 ccb.callback_arg = vbus_ext;
1447 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1457 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1466 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1467 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1468 if (!vbus_ext->shutdown_eh)
1472 ldm_for_each_vbus(vbus, vbus_ext) {
1473 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1474 if (vbus_ext->tasks)
1475 TASK_ENQUEUE(&vbus_ext->worker);
1656 PVBUS_EXT vbus_ext;
1658 ldm_for_each_vbus(vbus, vbus_ext) {
1663 if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),