static int kgsl_runpending(struct kgsl_device *device) { if (device->flags & KGSL_FLAGS_INITIALIZED) { kgsl_cmdstream_memqueue_drain(device); } return KGSL_SUCCESS; }
int kgsl_ringbuffer_stop(struct kgsl_ringbuffer *rb) { KGSL_CMD_VDBG("enter (rb=%p)\n", rb); if (rb->flags & KGSL_FLAGS_STARTED) { KGSL_CMD_DBG("disabling CP interrupts: mask %08x\n", 0); kgsl_yamato_regwrite(rb->device, REG_CP_INT_CNTL, 0); /* ME_HALT */ kgsl_yamato_regwrite(rb->device, REG_CP_ME_CNTL, 0x10000000); kgsl_cmdstream_memqueue_drain(rb->device); rb->flags &= ~KGSL_FLAGS_STARTED; } KGSL_CMD_VDBG("return %d\n", 0); return 0; }
int kgsl_ringbuffer_close(struct kgsl_ringbuffer *rb) { KGSL_CMD_VDBG("enter (rb=%p)\n", rb); kgsl_cmdstream_memqueue_drain(rb->device); kgsl_ringbuffer_stop(rb); kgsl_yamato_cleanup_pt(rb->device, rb->device->mmu.defaultpagetable); if (rb->buffer_desc.hostptr) kgsl_sharedmem_free(&rb->buffer_desc); if (rb->memptrs_desc.hostptr) kgsl_sharedmem_free(&rb->memptrs_desc); rb->flags &= ~KGSL_FLAGS_INITIALIZED; memset(rb, 0, sizeof(struct kgsl_ringbuffer)); KGSL_CMD_VDBG("return %d\n", 0); return 0; }
static int kgsl_runpending(struct kgsl_device *device) { kgsl_cmdstream_memqueue_drain(device); return KGSL_SUCCESS; }