Lines Matching refs:ctx
84 static int queue_iso(struct fdtv_ir_context *ctx, int index) in queue_iso() argument
89 p.interrupt = !(++ctx->interrupt_packet & (IRQ_INTERVAL - 1)); in queue_iso()
93 return fw_iso_context_queue(ctx->context, &p, &ctx->buffer, in queue_iso()
101 struct fdtv_ir_context *ctx = fdtv->ir_context; in handle_iso() local
103 int length, err, i = ctx->current_packet; in handle_iso()
113 p = ctx->pages[i / PACKETS_PER_PAGE] in handle_iso()
121 err = queue_iso(ctx, i); in handle_iso()
127 fw_iso_context_queue_flush(ctx->context); in handle_iso()
128 ctx->current_packet = i; in handle_iso()
133 struct fdtv_ir_context *ctx; in fdtv_start_iso() local
137 ctx = kmalloc(sizeof(*ctx), GFP_KERNEL); in fdtv_start_iso()
138 if (!ctx) in fdtv_start_iso()
141 ctx->context = fw_iso_context_create(device->card, in fdtv_start_iso()
144 if (IS_ERR(ctx->context)) { in fdtv_start_iso()
145 err = PTR_ERR(ctx->context); in fdtv_start_iso()
149 err = fw_iso_buffer_init(&ctx->buffer, device->card, in fdtv_start_iso()
154 ctx->interrupt_packet = 0; in fdtv_start_iso()
155 ctx->current_packet = 0; in fdtv_start_iso()
158 ctx->pages[i] = page_address(ctx->buffer.pages[i]); in fdtv_start_iso()
161 err = queue_iso(ctx, i); in fdtv_start_iso()
166 err = fw_iso_context_start(ctx->context, -1, 0, in fdtv_start_iso()
171 fdtv->ir_context = ctx; in fdtv_start_iso()
175 fw_iso_buffer_destroy(&ctx->buffer, device->card); in fdtv_start_iso()
177 fw_iso_context_destroy(ctx->context); in fdtv_start_iso()
179 kfree(ctx); in fdtv_start_iso()
186 struct fdtv_ir_context *ctx = fdtv->ir_context; in fdtv_stop_iso() local
188 fw_iso_context_stop(ctx->context); in fdtv_stop_iso()
189 fw_iso_buffer_destroy(&ctx->buffer, device_of(fdtv)->card); in fdtv_stop_iso()
190 fw_iso_context_destroy(ctx->context); in fdtv_stop_iso()
191 kfree(ctx); in fdtv_stop_iso()