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

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

Merge "msm: kgsl: Initialize the return value for adreno_regulator_enable"

parents 878c27f1 d2077209
Loading
Loading
Loading
Loading
+25 −7
Original line number Diff line number Diff line
@@ -1150,6 +1150,25 @@ out:
	return status;
}

static void _adreno_free_memories(struct adreno_device *adreno_dev)
{
	if (test_bit(ADRENO_DEVICE_CMDBATCH_PROFILE, &adreno_dev->priv))
		kgsl_free_global(&adreno_dev->cmdbatch_profile_buffer);

	/* Free local copies of firmware and other command streams */
	kfree(adreno_dev->pfp_fw);
	adreno_dev->pfp_fw = NULL;

	kfree(adreno_dev->pm4_fw);
	adreno_dev->pm4_fw = NULL;

	kfree(adreno_dev->gpmu_cmds);
	adreno_dev->gpmu_cmds = NULL;

	kgsl_free_global(&adreno_dev->pm4);
	kgsl_free_global(&adreno_dev->pfp);
}

static int adreno_remove(struct platform_device *pdev)
{
	struct adreno_device *adreno_dev = adreno_get_dev(pdev);
@@ -1160,8 +1179,8 @@ static int adreno_remove(struct platform_device *pdev)

	device = &adreno_dev->dev;

	if (test_bit(ADRENO_DEVICE_CMDBATCH_PROFILE, &adreno_dev->priv))
		kgsl_free_global(&adreno_dev->cmdbatch_profile_buffer);
	/* The memory is fading */
	_adreno_free_memories(adreno_dev);

#ifdef CONFIG_INPUT
	input_unregister_handler(&adreno_input_handler);
@@ -1502,8 +1521,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;

@@ -2125,9 +2143,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;

@@ -2608,7 +2626,7 @@ static unsigned int adreno_gpuid(struct kgsl_device *device,

static int adreno_regulator_enable(struct kgsl_device *device)
{
	int ret;
	int ret = 0;
	struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
	struct adreno_gpudev *gpudev  = ADRENO_GPU_DEVICE(adreno_dev);
	if (gpudev->regulator_enable &&
+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 −40
Original line number Diff line number Diff line
@@ -328,15 +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.
 * @start_type: Warm or cold start
 */
int adreno_ringbuffer_warm_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);
@@ -344,28 +341,7 @@ int adreno_ringbuffer_warm_start(struct adreno_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.
 */
int adreno_ringbuffer_cold_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_COLD);
	status = gpudev->microcode_load(adreno_dev, start_type);
	if (status)
		return status;

@@ -453,17 +429,6 @@ void adreno_ringbuffer_close(struct adreno_device *adreno_dev)
	struct adreno_ringbuffer *rb;
	int i;

	kfree(adreno_dev->pfp_fw);
	kfree(adreno_dev->pm4_fw);
	kfree(adreno_dev->gpmu_cmds);

	adreno_dev->pfp_fw = NULL;
	adreno_dev->pm4_fw = NULL;
	adreno_dev->gpmu_cmds = NULL;

	kgsl_free_global(&adreno_dev->pm4);
	kgsl_free_global(&adreno_dev->pfp);

	FOR_EACH_RINGBUFFER(adreno_dev, rb, i)
		_adreno_ringbuffer_close(rb);
}
+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);

Loading