Lines Matching refs:vbus_ext

78 	PVBUS_EXT vbus_ext;
112 vbus_ext = malloc(sizeof(VBUS_EXT) + size, M_DEVBUF, M_WAITOK |
114 vbus_ext->ext_type = EXT_TYPE_VBUS;
115 ldm_create_vbus((PVBUS)vbus_ext->vbus, vbus_ext);
119 ldm_for_each_vbus(vbus, vbus_ext) {
121 hba->vbus_ext = vbus_ext;
122 hba->next = vbus_ext->hba_list;
123 vbus_ext->hba_list = hba;
146 static int hpt_alloc_mem(PVBUS_EXT vbus_ext)
153 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
156 ldm_get_mem_info((PVBUS)vbus_ext->vbus, 0);
158 for (f=vbus_ext->freelist_head; f; f=f->next) {
169 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
199 dmapool_put_page((PVBUS)vbus_ext->vbus, p, (BUS_ADDRESS)vtophys(p));
205 static void hpt_free_mem(PVBUS_EXT vbus_ext)
212 for (f=vbus_ext->freelist_head; f; f=f->next) {
223 p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus);
228 for (f=vbus_ext->freelist_dma_head; f; f=f->next) {
243 dmapool_put_page((PVBUS)vbus_ext->vbus, p, bus);
248 while ((p = dmapool_get_page((PVBUS)vbus_ext->vbus, &bus)))
252 static int hpt_init_vbus(PVBUS_EXT vbus_ext)
256 for (hba = vbus_ext->hba_list; hba; hba = hba->next)
262 ldm_initialize_vbus((PVBUS)vbus_ext->vbus, &vbus_ext->hba_list->ldm_adapter);
286 static int hpt_flush_vdev(PVBUS_EXT vbus_ext, PVDEV vd)
294 hpt_assert_vbus_locked(vbus_ext);
318 while (hpt_sleep(vbus_ext, pCmd, PPAUSE, "hptfls", HPT_OSM_TIMEOUT)) {
333 static void hpt_stop_tasks(PVBUS_EXT vbus_ext);
334 static void hpt_shutdown_vbus(PVBUS_EXT vbus_ext, int howto)
336 PVBUS vbus = (PVBUS)vbus_ext->vbus;
343 hpt_stop_tasks(vbus_ext);
344 hpt_lock_vbus(vbus_ext);
345 vbus_ext->worker.ta_context = 0;
352 if (hpt_flush_vdev(vbus_ext, vd))
353 hpt_flush_vdev(vbus_ext, vd);
358 hpt_unlock_vbus(vbus_ext);
362 for (hba=vbus_ext->hba_list; hba; hba=hba->next)
365 hpt_free_mem(vbus_ext);
367 while ((hba=vbus_ext->hba_list)) {
368 vbus_ext->hba_list = hba->next;
372 callout_drain(&vbus_ext->timer);
373 mtx_destroy(&vbus_ext->lock);
374 free(vbus_ext, M_DEVBUF);
378 static void __hpt_do_tasks(PVBUS_EXT vbus_ext)
382 tasks = vbus_ext->tasks;
383 vbus_ext->tasks = 0;
389 t->func(vbus_ext->vbus, t->data);
393 static void hpt_do_tasks(PVBUS_EXT vbus_ext, int pending)
395 if(vbus_ext){
396 hpt_lock_vbus(vbus_ext);
397 __hpt_do_tasks(vbus_ext);
398 hpt_unlock_vbus(vbus_ext);
407 static __inline POS_CMDEXT cmdext_get(PVBUS_EXT vbus_ext)
409 POS_CMDEXT p = vbus_ext->cmdext_list;
411 vbus_ext->cmdext_list = p->next;
417 p->next = p->vbus_ext->cmdext_list;
418 p->vbus_ext->cmdext_list = p;
428 ldm_reset_vbus((PVBUS)ext->vbus_ext->vbus);
516 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTREAD);
519 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map, BUS_DMASYNC_POSTWRITE);
522 bus_dmamap_unload(ext->vbus_ext->io_dmat, ext->dma_map);
559 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
563 bus_dmamap_sync(ext->vbus_ext->io_dmat, ext->dma_map,
572 static void hpt_scsi_io(PVBUS_EXT vbus_ext, union ccb *ccb)
574 PVBUS vbus = (PVBUS)vbus_ext->vbus;
730 pCmd->priv = ext = cmdext_get(vbus_ext);
744 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
867 os_get_vbus_seq(vbus_ext), vd->target_id);
1059 pCmd->priv = ext = cmdext_get(vbus_ext);
1067 error = bus_dmamap_load_ccb(vbus_ext->io_dmat,
1094 PVBUS_EXT vbus_ext = (PVBUS_EXT)cam_sim_softc(sim);
1098 hpt_assert_vbus_locked(vbus_ext);
1102 hpt_scsi_io(vbus_ext, ccb);
1106 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
1159 PVBUS_EXT vbus_ext = (PVBUS_EXT)arg;
1160 hpt_lock_vbus(vbus_ext);
1161 ldm_intr((PVBUS)vbus_ext->vbus);
1162 hpt_unlock_vbus(vbus_ext);
1167 PVBUS_EXT vbus_ext = cam_sim_softc(sim);
1168 hpt_assert_vbus_locked(vbus_ext);
1169 ldm_intr((PVBUS)vbus_ext->vbus);
1195 static void __hpt_do_ioctl(PVBUS_EXT vbus_ext, IOCTL_ARG *ioctl_args)
1201 hpt_lock_vbus(vbus_ext);
1202 ldm_ioctl((PVBUS)vbus_ext->vbus, ioctl_args);
1205 if (hpt_sleep(vbus_ext, ioctl_args, PPAUSE, "hptctl", HPT_OSM_TIMEOUT)==0)
1207 ldm_reset_vbus((PVBUS)vbus_ext->vbus);
1208 __hpt_do_tasks(vbus_ext);
1213 hpt_unlock_vbus(vbus_ext);
1219 PVBUS_EXT vbus_ext;
1221 ldm_for_each_vbus(vbus, vbus_ext) {
1222 __hpt_do_ioctl(vbus_ext, ioctl_args);
1263 static int __hpt_stop_tasks(PVBUS_EXT vbus_ext, DEVICEID id)
1292 __hpt_stop_tasks(vbus_ext, devinfo.u.array.Members[i]);
1297 static void hpt_stop_tasks(PVBUS_EXT vbus_ext)
1305 __hpt_stop_tasks(vbus_ext, ids[i]);
1329 PVBUS_EXT vbus_ext;
1338 ldm_for_each_vbus(vbus, vbus_ext) {
1339 if (hpt_alloc_mem(vbus_ext)) {
1353 ldm_for_each_vbus(vbus, vbus_ext) {
1355 mtx_init(&vbus_ext->lock, "hptsleeplock", NULL, MTX_DEF);
1356 callout_init_mtx(&vbus_ext->timer, &vbus_ext->lock, 0);
1357 if (hpt_init_vbus(vbus_ext)) {
1364 ldm_for_each_vbus(vbus, vbus_ext) {
1379 &vbus_ext->lock, /* lockfuncarg */
1380 &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);
1439 xpt_setup_ccb(&ccb.ccb_h, vbus_ext->path, /*priority*/5);
1443 ccb.callback_arg = vbus_ext;
1446 for (hba = vbus_ext->hba_list; hba; hba = hba->next) {
1456 NULL, hpt_pci_intr, vbus_ext, &hba->irq_handle))
1465 vbus_ext->shutdown_eh = EVENTHANDLER_REGISTER(shutdown_final,
1466 hpt_shutdown_vbus, vbus_ext, SHUTDOWN_PRI_DEFAULT);
1467 if (!vbus_ext->shutdown_eh)
1471 ldm_for_each_vbus(vbus, vbus_ext) {
1472 TASK_INIT(&vbus_ext->worker, 0, (task_fn_t *)hpt_do_tasks, vbus_ext);
1473 if (vbus_ext->tasks)
1474 TASK_ENQUEUE(&vbus_ext->worker);
1662 PVBUS_EXT vbus_ext;
1664 ldm_for_each_vbus(vbus, vbus_ext) {
1669 if (xpt_create_path(&ccb->ccb_h.path, NULL, cam_sim_path(vbus_ext->sim),