Loading drivers/media/platform/msm/cvp/cvp_core_hfi.h +1 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ struct cvp_mem_addr { }; struct cvp_iface_q_info { spinlock_t hfi_lock; void *q_hdr; struct cvp_mem_addr q_array; }; Loading drivers/media/platform/msm/cvp/cvp_hfi.c +10 −0 Original line number Diff line number Diff line Loading @@ -612,6 +612,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, return -ENODATA; } spin_lock(&qinfo->hfi_lock); read_idx = queue->qhdr_read_idx; empty_space = (queue->qhdr_write_idx >= read_idx) ? Loading @@ -619,6 +620,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, (read_idx - queue->qhdr_write_idx); if (empty_space <= packet_size_in_words) { queue->qhdr_tx_req = 1; spin_unlock(&qinfo->hfi_lock); dprintk(CVP_ERR, "Insufficient size (%d) to write (%d)\n", empty_space, packet_size_in_words); return -ENOTEMPTY; Loading Loading @@ -653,6 +655,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, * interrupt is raised on venus. */ mb(); spin_unlock(&qinfo->hfi_lock); return 0; } Loading Loading @@ -693,6 +696,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, * is being emptied out for every interrupt from Venus. * Venus will anyway generates interrupt if it is full. */ spin_lock(&qinfo->hfi_lock); if (queue->qhdr_type & HFI_Q_ID_CTRL_TO_HOST_MSG_Q) receive_request = 1; Loading @@ -704,6 +708,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, */ mb(); *pb_tx_req_is_set = 0; spin_unlock(&qinfo->hfi_lock); dprintk(CVP_DBG, "%s queue is empty, rx_req = %u, tx_req = %u, read_idx = %u\n", receive_request ? "message" : "debug", Loading @@ -716,6 +721,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, (queue->qhdr_read_idx << 2)); packet_size_in_words = (*read_ptr) >> 2; if (!packet_size_in_words) { spin_unlock(&qinfo->hfi_lock); dprintk(CVP_ERR, "Zero packet size\n"); return -ENODATA; } Loading Loading @@ -758,6 +764,8 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, *pb_tx_req_is_set = (queue->qhdr_tx_req == 1) ? 1 : 0; spin_unlock(&qinfo->hfi_lock); if ((msm_cvp_debug & CVP_PKT) && !(queue->qhdr_type & HFI_Q_ID_CTRL_TO_HOST_DEBUG_Q)) { dprintk(CVP_PKT, "%s: %pK\n", __func__, qinfo); Loading Loading @@ -1623,6 +1631,7 @@ static int __interface_dsp_queues_init(struct venus_hfi_device *dev) iface_q->q_hdr = CVP_IFACEQ_GET_QHDR_START_ADDR( dev->dsp_iface_q_table.align_virtual_addr, i); __set_queue_hdr_defaults(iface_q->q_hdr); spin_lock_init(&iface_q->hfi_lock); } q_tbl_hdr = (struct hfi_queue_table_header *) Loading Loading @@ -1842,6 +1851,7 @@ static int __interface_queues_init(struct venus_hfi_device *dev) iface_q->q_hdr = CVP_IFACEQ_GET_QHDR_START_ADDR( dev->iface_q_table.align_virtual_addr, i); __set_queue_hdr_defaults(iface_q->q_hdr); spin_lock_init(&iface_q->hfi_lock); } if ((msm_cvp_fw_debug_mode & HFI_DEBUG_MODE_QDSS) && num_entries) { Loading drivers/media/platform/msm/cvp/msm_cvp_core.c +1 −1 Original line number Diff line number Diff line Loading @@ -635,7 +635,7 @@ void *msm_cvp_open(int core_id, int session_type) } msm_cvp_dcvs_try_enable(inst); core->resources.max_inst_count = 1; core->resources.max_inst_count = MAX_SUPPORTED_INSTANCES; if (msm_cvp_check_for_inst_overload(core)) { dprintk(CVP_ERR, "Instance count reached Max limit, rejecting session"); Loading Loading
drivers/media/platform/msm/cvp/cvp_core_hfi.h +1 −0 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ struct cvp_mem_addr { }; struct cvp_iface_q_info { spinlock_t hfi_lock; void *q_hdr; struct cvp_mem_addr q_array; }; Loading
drivers/media/platform/msm/cvp/cvp_hfi.c +10 −0 Original line number Diff line number Diff line Loading @@ -612,6 +612,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, return -ENODATA; } spin_lock(&qinfo->hfi_lock); read_idx = queue->qhdr_read_idx; empty_space = (queue->qhdr_write_idx >= read_idx) ? Loading @@ -619,6 +620,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, (read_idx - queue->qhdr_write_idx); if (empty_space <= packet_size_in_words) { queue->qhdr_tx_req = 1; spin_unlock(&qinfo->hfi_lock); dprintk(CVP_ERR, "Insufficient size (%d) to write (%d)\n", empty_space, packet_size_in_words); return -ENOTEMPTY; Loading Loading @@ -653,6 +655,7 @@ static int __write_queue(struct cvp_iface_q_info *qinfo, u8 *packet, * interrupt is raised on venus. */ mb(); spin_unlock(&qinfo->hfi_lock); return 0; } Loading Loading @@ -693,6 +696,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, * is being emptied out for every interrupt from Venus. * Venus will anyway generates interrupt if it is full. */ spin_lock(&qinfo->hfi_lock); if (queue->qhdr_type & HFI_Q_ID_CTRL_TO_HOST_MSG_Q) receive_request = 1; Loading @@ -704,6 +708,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, */ mb(); *pb_tx_req_is_set = 0; spin_unlock(&qinfo->hfi_lock); dprintk(CVP_DBG, "%s queue is empty, rx_req = %u, tx_req = %u, read_idx = %u\n", receive_request ? "message" : "debug", Loading @@ -716,6 +721,7 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, (queue->qhdr_read_idx << 2)); packet_size_in_words = (*read_ptr) >> 2; if (!packet_size_in_words) { spin_unlock(&qinfo->hfi_lock); dprintk(CVP_ERR, "Zero packet size\n"); return -ENODATA; } Loading Loading @@ -758,6 +764,8 @@ static int __read_queue(struct cvp_iface_q_info *qinfo, u8 *packet, *pb_tx_req_is_set = (queue->qhdr_tx_req == 1) ? 1 : 0; spin_unlock(&qinfo->hfi_lock); if ((msm_cvp_debug & CVP_PKT) && !(queue->qhdr_type & HFI_Q_ID_CTRL_TO_HOST_DEBUG_Q)) { dprintk(CVP_PKT, "%s: %pK\n", __func__, qinfo); Loading Loading @@ -1623,6 +1631,7 @@ static int __interface_dsp_queues_init(struct venus_hfi_device *dev) iface_q->q_hdr = CVP_IFACEQ_GET_QHDR_START_ADDR( dev->dsp_iface_q_table.align_virtual_addr, i); __set_queue_hdr_defaults(iface_q->q_hdr); spin_lock_init(&iface_q->hfi_lock); } q_tbl_hdr = (struct hfi_queue_table_header *) Loading Loading @@ -1842,6 +1851,7 @@ static int __interface_queues_init(struct venus_hfi_device *dev) iface_q->q_hdr = CVP_IFACEQ_GET_QHDR_START_ADDR( dev->iface_q_table.align_virtual_addr, i); __set_queue_hdr_defaults(iface_q->q_hdr); spin_lock_init(&iface_q->hfi_lock); } if ((msm_cvp_fw_debug_mode & HFI_DEBUG_MODE_QDSS) && num_entries) { Loading
drivers/media/platform/msm/cvp/msm_cvp_core.c +1 −1 Original line number Diff line number Diff line Loading @@ -635,7 +635,7 @@ void *msm_cvp_open(int core_id, int session_type) } msm_cvp_dcvs_try_enable(inst); core->resources.max_inst_count = 1; core->resources.max_inst_count = MAX_SUPPORTED_INSTANCES; if (msm_cvp_check_for_inst_overload(core)) { dprintk(CVP_ERR, "Instance count reached Max limit, rejecting session"); Loading