Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 70a110d5 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: vidc: Set QDSS memory based on debug flag"

parents 8f4275d8 6d3fd1e8
Loading
Loading
Loading
Loading
+42 −32
Original line number Diff line number Diff line
@@ -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;

@@ -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);
@@ -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);
@@ -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 +
@@ -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");
@@ -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))