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

Commit 7d790935 authored by Carter Cooper's avatar Carter Cooper
Browse files

msm: kgsl: Minimize RB start function footprint



There is no need for the extra indirection of two functions
that do the same thing. Use one function to do ringbuffer start
and remove and enum while we are at it.

Change-Id: I998dd528041eaa2414abf6b92e8cda8d54520f70
Signed-off-by: default avatarCarter Cooper <ccooper@codeaurora.org>
parent 45cf9621
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1519,8 +1519,7 @@ static int _adreno_start(struct adreno_device *adreno_dev)
	/* Clear FSR here in case it is set from a previous pagefault */
	kgsl_mmu_clear_fsr(&device->mmu);

	status = adreno_ringbuffer_cold_start(adreno_dev);

	status = adreno_ringbuffer_start(adreno_dev, ADRENO_START_COLD);
	if (status)
		goto error_mmu_off;

@@ -2142,9 +2141,9 @@ static int adreno_soft_reset(struct kgsl_device *device)
	 */

	if (ADRENO_FEATURE(adreno_dev, ADRENO_WARM_START))
		ret = adreno_ringbuffer_warm_start(adreno_dev);
		ret = adreno_ringbuffer_start(adreno_dev, ADRENO_START_WARM);
	else
		ret = adreno_ringbuffer_cold_start(adreno_dev);
		ret = adreno_ringbuffer_start(adreno_dev, ADRENO_START_COLD);
	if (ret)
		goto done;

+2 −4
Original line number Diff line number Diff line
@@ -158,10 +158,8 @@ enum adreno_gpurev {
	ADRENO_REV_A530 = 530,
};

enum adreno_start_type {
	ADRENO_START_WARM,
	ADRENO_START_COLD,
};
#define ADRENO_START_WARM 0
#define ADRENO_START_COLD 1

#define ADRENO_SOFT_FAULT BIT(0)
#define ADRENO_HARD_FAULT BIT(1)
+2 −1
Original line number Diff line number Diff line
@@ -1820,7 +1820,8 @@ int a3xx_microcode_load(struct adreno_device *adreno_dev,
			if (status != 0)
				return status;
		}
	}
	} else
		return -EINVAL;

	return 0;
}
+5 −29
Original line number Diff line number Diff line
@@ -328,36 +328,12 @@ static int _ringbuffer_start_common(struct adreno_ringbuffer *rb)
}

/**
 * adreno_ringbuffer_warm_start() - Ringbuffer warm start
 * adreno_ringbuffer_start() - Ringbuffer start
 * @adreno_dev: Pointer to adreno device
 *
 * Start the ringbuffer but load only jump tables part of the
 * microcode. Only need to start the current active ringbuffer
 * do not mess with inactive ringbuffers state because they
 * could contain valid commands.
 */
int adreno_ringbuffer_warm_start(struct adreno_device *adreno_dev)
{
	int status;
	struct adreno_ringbuffer *rb = ADRENO_CURRENT_RINGBUFFER(adreno_dev);
	struct adreno_gpudev *gpudev = ADRENO_GPU_DEVICE(adreno_dev);

	_ringbuffer_setup_common(rb);

	status = gpudev->microcode_load(adreno_dev, ADRENO_START_WARM);
	if (status)
		return status;

	return _ringbuffer_start_common(rb);
}

/**
 * adreno_ringbuffer_cold_start() - Ringbuffer cold start
 * @adreno_dev: Pointer to adreno device
 *
 * Start the ringbuffers from power collapse. All ringbuffers are started.
 * @start_type: Warm or cold start
 */
int adreno_ringbuffer_cold_start(struct adreno_device *adreno_dev)
int adreno_ringbuffer_start(struct adreno_device *adreno_dev,
	unsigned int start_type)
{
	int status;
	struct adreno_ringbuffer *rb = ADRENO_CURRENT_RINGBUFFER(adreno_dev);
@@ -365,7 +341,7 @@ int adreno_ringbuffer_cold_start(struct adreno_device *adreno_dev)

	_ringbuffer_setup_common(rb);

	status = gpudev->microcode_load(adreno_dev, ADRENO_START_COLD);
	status = gpudev->microcode_load(adreno_dev, start_type);
	if (status)
		return status;

+2 −3
Original line number Diff line number Diff line
@@ -147,9 +147,8 @@ int adreno_ringbuffer_submitcmd(struct adreno_device *adreno_dev,

int adreno_ringbuffer_init(struct kgsl_device *device);

int adreno_ringbuffer_warm_start(struct adreno_device *adreno_dev);

int adreno_ringbuffer_cold_start(struct adreno_device *adreno_dev);
int adreno_ringbuffer_start(struct adreno_device *adreno_dev,
		unsigned int start_type);

void adreno_ringbuffer_stop(struct adreno_device *adreno_dev);