static int msm_vidc_initialize_core(struct platform_device *pdev, struct msm_vidc_core *core) { int i = 0; int rc = 0; if (!core) return -EINVAL; rc = read_platform_resources(core, pdev); if (rc) { dprintk(VIDC_ERR, "Failed to get platform resources\n"); return rc; } INIT_LIST_HEAD(&core->instances); mutex_init(&core->sync_lock); mutex_init(&core->lock); core->state = VIDC_CORE_UNINIT; for (i = SYS_MSG_INDEX(SYS_MSG_START); i <= SYS_MSG_INDEX(SYS_MSG_END); i++) { init_completion(&core->completions[i]); } return rc; }
static ssize_t core_info_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { struct msm_vidc_core *core = file->private_data; int i = 0; if (!core) { dprintk(VIDC_ERR, "Invalid params, core: %p\n", core); return 0; } INIT_DBG_BUF(dbg_buf); write_str(&dbg_buf, "===============================\n"); write_str(&dbg_buf, "CORE %d: 0x%p\n", core->id, core); write_str(&dbg_buf, "===============================\n"); write_str(&dbg_buf, "state: %d\n", core->state); write_str(&dbg_buf, "base addr: 0x%x\n", core->base_addr); write_str(&dbg_buf, "register_base: 0x%x\n", core->register_base); write_str(&dbg_buf, "register_size: %u\n", core->register_size); write_str(&dbg_buf, "irq: %u\n", core->irq); for (i = SYS_MSG_START; i < SYS_MSG_END; i++) { write_str(&dbg_buf, "completions[%d]: %s\n", i, completion_done(&core->completions[SYS_MSG_INDEX(i)]) ? "pending" : "done"); } return simple_read_from_buffer(buf, count, ppos, dbg_buf.ptr, dbg_buf.filled_size); }
static ssize_t core_info_read(struct file *file, char __user *buf, size_t count, loff_t *ppos) { struct msm_vidc_core *core = file->private_data; struct hfi_device *hdev; int i = 0; if (!core || !core->device) { dprintk(VIDC_ERR, "Invalid params, core: %p\n", core); return 0; } hdev = core->device; INIT_DBG_BUF(dbg_buf); write_str(&dbg_buf, "===============================\n"); write_str(&dbg_buf, "CORE %d: 0x%p\n", core->id, core); write_str(&dbg_buf, "===============================\n"); write_str(&dbg_buf, "state: %d\n", core->state); write_str(&dbg_buf, "base addr: 0x%x\n", call_hfi_op(hdev, get_fw_info, hdev->hfi_device_data, FW_BASE_ADDRESS)); write_str(&dbg_buf, "register_base: 0x%x\n", call_hfi_op(hdev, get_fw_info, hdev->hfi_device_data, FW_REGISTER_BASE)); write_str(&dbg_buf, "register_size: %u\n", call_hfi_op(hdev, get_fw_info, hdev->hfi_device_data, FW_REGISTER_SIZE)); write_str(&dbg_buf, "irq: %u\n", call_hfi_op(hdev, get_fw_info, hdev->hfi_device_data, FW_IRQ)); for (i = SYS_MSG_START; i < SYS_MSG_END; i++) { write_str(&dbg_buf, "completions[%d]: %s\n", i, completion_done(&core->completions[SYS_MSG_INDEX(i)]) ? "pending" : "done"); } return simple_read_from_buffer(buf, count, ppos, dbg_buf.ptr, dbg_buf.filled_size); }