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

Commit 592c5f76 authored by Urvashi Agrawal's avatar Urvashi Agrawal
Browse files

msm: kgsl: Add correct virtual address for GMEM



Add correct virtual address for GMEM for kona. Also
UCHE_GMEM_RANGE registers are no longer used so make
changes to support that.

Change-Id: I62df68d51c48519ea2a87831fc7ebb47dfaf6da5
Signed-off-by: default avatarUrvashi Agrawal <urvaagra@codeaurora.org>
parent 9d2c3982
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2002,2007-2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2002,2007-2019, The Linux Foundation. All rights reserved.
 */
#include <linux/module.h>
#include <linux/uaccess.h>
@@ -2377,7 +2377,10 @@ static int adreno_prop_uche_gmem_addr(struct kgsl_device *device,
	struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
	u64 vaddr;

	vaddr = (ADRENO_GPUREV(adreno_dev) >= 500) ? ADRENO_UCHE_GMEM_BASE : 0;
	if (ADRENO_GPUREV(adreno_dev) >= 500 && !(adreno_is_a650(adreno_dev)))
		vaddr = ADRENO_UCHE_GMEM_BASE;
	else
		vaddr = 0;

	return copy_prop(value, count, &vaddr, sizeof(vaddr));
}
+15 −8
Original line number Diff line number Diff line
@@ -871,7 +871,13 @@ static void a6xx_start(struct adreno_device *adreno_dev)
	kgsl_regwrite(device, A6XX_UCHE_WRITE_THRU_BASE_LO, 0xfffff000);
	kgsl_regwrite(device, A6XX_UCHE_WRITE_THRU_BASE_HI, 0x0001ffff);

	/* Program the GMEM VA range for the UCHE path */
	/*
	 * Program the GMEM VA range for the UCHE path.
	 * From Kona onwards the GMEM VA address is 0, and
	 * UCHE_GMEM_RANGE registers are no longer used, so we don't
	 * have to program them.
	 */
	if (!adreno_is_a650(adreno_dev)) {
		kgsl_regwrite(device, A6XX_UCHE_GMEM_RANGE_MIN_LO,
					ADRENO_UCHE_GMEM_BASE);
		kgsl_regwrite(device, A6XX_UCHE_GMEM_RANGE_MIN_HI, 0x0);
@@ -879,6 +885,7 @@ static void a6xx_start(struct adreno_device *adreno_dev)
					ADRENO_UCHE_GMEM_BASE +
					adreno_dev->gmem_size - 1);
		kgsl_regwrite(device, A6XX_UCHE_GMEM_RANGE_MAX_HI, 0x0);
	}

	kgsl_regwrite(device, A6XX_UCHE_FILTER_CNTL, 0x804);
	kgsl_regwrite(device, A6XX_UCHE_CACHE_WAYS, 0x4);