Loading drivers/media/platform/msm/vidc/venus_hfi.c +42 −32 Original line number Diff line number Diff line Loading @@ -1420,15 +1420,19 @@ static void venus_hfi_interface_queues_release(struct venus_hfi_device *device) device->iface_queues[i].q_array.align_virtual_addr = NULL; device->iface_queues[i].q_array.align_device_addr = NULL; } device->iface_q_table.mem_data = NULL; device->iface_q_table.align_virtual_addr = NULL; device->iface_q_table.align_device_addr = NULL; device->qdss.mem_data = NULL; device->qdss.align_virtual_addr = NULL; device->qdss.align_device_addr = NULL; device->sfr.mem_data = NULL; device->sfr.align_virtual_addr = NULL; device->sfr.align_device_addr = NULL; device->mem_addr.mem_data = NULL; device->mem_addr.align_virtual_addr = NULL; device->mem_addr.align_device_addr = NULL; Loading Loading @@ -1514,7 +1518,7 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) dev->iface_q_table.align_virtual_addr, i); venus_hfi_set_queue_hdr_defaults(iface_q->q_hdr); } if (msm_fw_debug_mode & HFI_DEBUG_MODE_QDSS) { rc = venus_hfi_alloc(dev, (void *) mem_addr, QDSS_SIZE, 1, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE); Loading @@ -1523,11 +1527,14 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) "qdss_alloc_fail: QDSS messages logging will not work\n"); dev->qdss.align_device_addr = NULL; } else { dev->qdss.align_device_addr = mem_addr->align_device_addr; dev->qdss.align_virtual_addr = mem_addr->align_virtual_addr; dev->qdss.align_device_addr = mem_addr->align_device_addr; dev->qdss.align_virtual_addr = mem_addr->align_virtual_addr; dev->qdss.mem_size = QDSS_SIZE; dev->qdss.mem_data = mem_addr->mem_data; } } rc = venus_hfi_alloc(dev, (void *) mem_addr, SFR_SIZE, 1, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE); Loading Loading @@ -1582,7 +1589,9 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) VIDC_CPU_CS_SCIACMDARG1, 0x01, dev->iface_q_table.align_virtual_addr); qdss = (struct hfi_mem_map_table *) dev->qdss.align_virtual_addr; if (dev->qdss.mem_data) { qdss = (struct hfi_mem_map_table *) dev->qdss.align_virtual_addr; qdss->mem_map_num_entries = num_entries; qdss->mem_map_table_base_addr = (u32 *) ((u32)dev->qdss.align_device_addr + Loading @@ -1590,7 +1599,8 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) mem_map = (struct hfi_mem_map *)(qdss + 1); msm_smem_get_domain_partition(dev->hal_client, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE, &domain, &partition); rc = venus_hfi_get_qdss_iommu_virtual_addr(mem_map, domain, partition); rc = venus_hfi_get_qdss_iommu_virtual_addr(mem_map, domain, partition); if (rc) { dprintk(VIDC_ERR, "IOMMU mapping failed, Freeing qdss memdata\n"); Loading @@ -1601,7 +1611,7 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) venus_hfi_write_register(dev, VIDC_MMAP_ADDR, (u32) dev->qdss.align_device_addr, 0); } vsfr = (struct hfi_sfr_struct *) dev->sfr.align_virtual_addr; vsfr->bufSize = SFR_SIZE; if (!IS_ERR_OR_NULL(dev->sfr.align_device_addr)) Loading Loading
drivers/media/platform/msm/vidc/venus_hfi.c +42 −32 Original line number Diff line number Diff line Loading @@ -1420,15 +1420,19 @@ static void venus_hfi_interface_queues_release(struct venus_hfi_device *device) device->iface_queues[i].q_array.align_virtual_addr = NULL; device->iface_queues[i].q_array.align_device_addr = NULL; } device->iface_q_table.mem_data = NULL; device->iface_q_table.align_virtual_addr = NULL; device->iface_q_table.align_device_addr = NULL; device->qdss.mem_data = NULL; device->qdss.align_virtual_addr = NULL; device->qdss.align_device_addr = NULL; device->sfr.mem_data = NULL; device->sfr.align_virtual_addr = NULL; device->sfr.align_device_addr = NULL; device->mem_addr.mem_data = NULL; device->mem_addr.align_virtual_addr = NULL; device->mem_addr.align_device_addr = NULL; Loading Loading @@ -1514,7 +1518,7 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) dev->iface_q_table.align_virtual_addr, i); venus_hfi_set_queue_hdr_defaults(iface_q->q_hdr); } if (msm_fw_debug_mode & HFI_DEBUG_MODE_QDSS) { rc = venus_hfi_alloc(dev, (void *) mem_addr, QDSS_SIZE, 1, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE); Loading @@ -1523,11 +1527,14 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) "qdss_alloc_fail: QDSS messages logging will not work\n"); dev->qdss.align_device_addr = NULL; } else { dev->qdss.align_device_addr = mem_addr->align_device_addr; dev->qdss.align_virtual_addr = mem_addr->align_virtual_addr; dev->qdss.align_device_addr = mem_addr->align_device_addr; dev->qdss.align_virtual_addr = mem_addr->align_virtual_addr; dev->qdss.mem_size = QDSS_SIZE; dev->qdss.mem_data = mem_addr->mem_data; } } rc = venus_hfi_alloc(dev, (void *) mem_addr, SFR_SIZE, 1, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE); Loading Loading @@ -1582,7 +1589,9 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) VIDC_CPU_CS_SCIACMDARG1, 0x01, dev->iface_q_table.align_virtual_addr); qdss = (struct hfi_mem_map_table *) dev->qdss.align_virtual_addr; if (dev->qdss.mem_data) { qdss = (struct hfi_mem_map_table *) dev->qdss.align_virtual_addr; qdss->mem_map_num_entries = num_entries; qdss->mem_map_table_base_addr = (u32 *) ((u32)dev->qdss.align_device_addr + Loading @@ -1590,7 +1599,8 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) mem_map = (struct hfi_mem_map *)(qdss + 1); msm_smem_get_domain_partition(dev->hal_client, 0, HAL_BUFFER_INTERNAL_CMD_QUEUE, &domain, &partition); rc = venus_hfi_get_qdss_iommu_virtual_addr(mem_map, domain, partition); rc = venus_hfi_get_qdss_iommu_virtual_addr(mem_map, domain, partition); if (rc) { dprintk(VIDC_ERR, "IOMMU mapping failed, Freeing qdss memdata\n"); Loading @@ -1601,7 +1611,7 @@ static int venus_hfi_interface_queues_init(struct venus_hfi_device *dev) venus_hfi_write_register(dev, VIDC_MMAP_ADDR, (u32) dev->qdss.align_device_addr, 0); } vsfr = (struct hfi_sfr_struct *) dev->sfr.align_virtual_addr; vsfr->bufSize = SFR_SIZE; if (!IS_ERR_OR_NULL(dev->sfr.align_device_addr)) Loading