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

Commit 9dd8c088 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Increase GMU log size to 16 KB"

parents 5dcc7b61 2a242c5d
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1365,7 +1365,7 @@ void a6xx_gmu_register_config(struct adreno_device *adreno_dev)

	/* Log size is encoded in (number of 4K units - 1) */
	gmu_log_info = (gmu->gmu_log->gmuaddr & 0xFFFFF000) |
		((LOGMEM_SIZE/SZ_4K - 1) & 0xFF);
		((GMU_LOG_SIZE/SZ_4K - 1) & 0xFF);
	gmu_core_regwrite(device, A6XX_GPU_GMU_CX_GMU_PWR_COL_CP_MSG,
			gmu_log_info);

@@ -1564,7 +1564,7 @@ int a6xx_gmu_memory_init(struct adreno_device *adreno_dev)

	/* GMU master log */
	if (IS_ERR_OR_NULL(gmu->gmu_log))
		gmu->gmu_log = reserve_gmu_kernel_block(gmu, 0, SZ_4K,
		gmu->gmu_log = reserve_gmu_kernel_block(gmu, 0, GMU_LOG_SIZE,
				GMU_NONCACHED_KERNEL);

	return PTR_ERR_OR_ZERO(gmu->gmu_log);
+3 −1
Original line number Diff line number Diff line
@@ -75,7 +75,7 @@ struct gmu_block_header {
#define GMU_BLK_TYPE_PREALLOC_PERSIST_REQ 7

/* For GMU Logs*/
#define LOGMEM_SIZE  SZ_4K
#define GMU_LOG_SIZE  SZ_16K

/* GMU memdesc entries */
#define GMU_KERNEL_ENTRIES		16
@@ -205,6 +205,8 @@ struct a6xx_gmu_device {
	void __iomem *rdpm_cx_virt;
	/** @rdpm_mx_virt: Pointer where the RDPM MX block is mapped */
	void __iomem *rdpm_mx_virt;
	/** @log_stream_enable: GMU log streaming enable */
	bool log_stream_enable;
};

/* Helper function to get to a6xx gmu device from adreno device */
+21 −0
Original line number Diff line number Diff line
@@ -439,6 +439,27 @@ int a6xx_hfi_send_feature_ctrl(struct adreno_device *adreno_dev,
	return ret;
}

int a6xx_hfi_send_set_value(struct adreno_device *adreno_dev,
		u32 type, u32 subtype, u32 data)
{
	struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev);
	struct hfi_set_value_cmd cmd = {
		.type = type,
		.subtype = subtype,
		.data = data,
	};
	int ret;

	CMD_MSG_HDR(cmd, H2F_MSG_SET_VALUE);

	ret = a6xx_hfi_send_generic_req(adreno_dev, &cmd);
	if (ret)
		dev_err(&gmu->pdev->dev,
			"Unable to set HFI Value %d, %d to %d, error = %d\n",
			type, subtype, data, ret);
	return ret;
}

static int a6xx_hfi_send_dcvstbl_v1(struct adreno_device *adreno_dev)
{
	struct a6xx_gmu_device *gmu = to_a6xx_gmu(adreno_dev);
+13 −0
Original line number Diff line number Diff line
@@ -78,6 +78,7 @@
#define HFI_VALUE_LOG_EVENT_OFF		113
#define HFI_VALUE_DCVS_OBJ		114
#define HFI_VALUE_LM_CS0		115
#define HFI_VALUE_LOG_STREAM_ENABLE	119
#define HFI_VALUE_PREEMPT_COUNT         120

#define HFI_VALUE_GLOBAL_TOKEN		0xFFFFFFFF
@@ -664,6 +665,18 @@ int a6xx_receive_ack_cmd(struct a6xx_gmu_device *gmu, void *rcvd,
int a6xx_hfi_send_feature_ctrl(struct adreno_device *adreno_dev,
	u32 feature, u32 enable, u32 data);

/**
 * a6xx_hfi_send_set_value - Send gmu set_values via hfi
 * @adreno_dev: Pointer to the adreno device
 * @type: GMU set_value type
 * @subtype: GMU set_value subtype
 * @data: Value to set
 *
 * Return: 0 on success or negative error on failure
 */
int a6xx_hfi_send_set_value(struct adreno_device *adreno_dev,
		u32 type, u32 subtype, u32 data);

/**
 * a6xx_hfi_send_core_fw_start - Send the core fw start hfi
 * @adreno_dev: Pointer to the adreno device
+4 −0
Original line number Diff line number Diff line
@@ -807,6 +807,10 @@ int a6xx_hwsched_hfi_start(struct adreno_device *adreno_dev)
	if (ret)
		goto err;

	if (gmu->log_stream_enable)
		a6xx_hfi_send_set_value(adreno_dev,
			HFI_VALUE_LOG_STREAM_ENABLE, 0, 1);

	ret = a6xx_hfi_send_core_fw_start(adreno_dev);
	if (ret)
		goto err;
Loading