static void stop_iso(struct firedtv *fdtv) { struct hpsb_iso *iso_handle = fdtv->backend_data; if (iso_handle != NULL) { hpsb_iso_stop(iso_handle); hpsb_iso_shutdown(iso_handle); } fdtv->backend_data = NULL; }
void hpsb_iso_shutdown(struct hpsb_iso *iso) { if (iso->flags & HPSB_ISO_DRIVER_INIT) { hpsb_iso_stop(iso); iso->host->driver->isoctl(iso, iso->type == HPSB_ISO_XMIT ? XMIT_SHUTDOWN : RECV_SHUTDOWN, 0); iso->flags &= ~HPSB_ISO_DRIVER_INIT; } dma_region_free(&iso->data_buf); kfree(iso); }