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

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

Merge "msm: kgsl: Vote for l3 via icc_set_bw"

parents 1ea05851 9f969369
Loading
Loading
Loading
Loading
+3 −5
Original line number Diff line number Diff line
@@ -1034,13 +1034,11 @@ l3_pwrlevel_probe(struct kgsl_device *device, struct device_node *node)
				&device->l3_freq[index]);
	}

	device->l3_clk = devm_clk_get(&device->pdev->dev, "l3_vote");
	device->l3_icc = of_icc_get(&device->pdev->dev, "l3_path");

	if (IS_ERR_OR_NULL(device->l3_clk)) {
	if (IS_ERR(device->l3_icc))
		dev_err(&device->pdev->dev,
			"Unable to get the l3_vote clock\n");
		device->l3_clk = NULL;
	}
			"Unable to get the l3 icc path\n");
}

static int adreno_of_get_power(struct adreno_device *adreno_dev,
+32 −0
Original line number Diff line number Diff line
@@ -129,6 +129,36 @@ static void a6xx_gmu_wrapper_init(struct adreno_device *adreno_dev)
		dev_warn(device->dev, "gmu_wrapper ioremap failed\n");
}

static int match_name(struct device *dev, void *data)
{
	struct device *parent = data;

	return (!strcmp(dev_name(dev), dev_name(parent)));
}

static void find_ddr_qos_device(struct adreno_device *adreno_dev)
{
	struct device *devfreq_dev, *ddr_qos_dev;
	struct kgsl_device *device = KGSL_DEVICE(adreno_dev);

	if (device->pwrctrl.ddr_qos_devfreq)
		return;

	ddr_qos_dev = bus_find_device_by_name(&platform_bus_type, NULL,
			"soc:qcom,kgsl-ddr-qos");

	if (!ddr_qos_dev)
		return;

	/* Devfreq device has the same name as its parent device */
	devfreq_dev = device_find_child(ddr_qos_dev, ddr_qos_dev, match_name);
	if (!devfreq_dev)
		return;

	device->pwrctrl.ddr_qos_devfreq = container_of(devfreq_dev,
					struct devfreq, dev);
}

int a6xx_init(struct adreno_device *adreno_dev)
{
	const struct adreno_a6xx_core *a6xx_core = to_a6xx_core(adreno_dev);
@@ -157,6 +187,8 @@ int a6xx_init(struct adreno_device *adreno_dev)
			return PTR_ERR(adreno_dev->pwrup_reglist);
	}

	find_ddr_qos_device(adreno_dev);

	return a6xx_get_cp_init_cmds(adreno_dev);
}

+2 −0
Original line number Diff line number Diff line
@@ -3103,6 +3103,8 @@ static int a6xx_power_off(struct adreno_device *adreno_dev)

	kgsl_pwrscale_sleep(device);

	kgsl_pwrctrl_clear_l3_vote(device);

	trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER);

	return ret;
+2 −0
Original line number Diff line number Diff line
@@ -654,6 +654,8 @@ static int a6xx_hwsched_power_off(struct adreno_device *adreno_dev)

	kgsl_pwrscale_sleep(device);

	kgsl_pwrctrl_clear_l3_vote(device);

	trace_kgsl_pwr_set_state(device, KGSL_STATE_SLUMBER);

	return ret;
+1 −0
Original line number Diff line number Diff line
@@ -711,6 +711,7 @@ static void a6xx_rgmu_power_off(struct adreno_device *adreno_dev)
	a6xx_rgmu_disable_clks(adreno_dev);
	a6xx_rgmu_disable_gdsc(adreno_dev);

	kgsl_pwrctrl_clear_l3_vote(device);
}

static int a6xx_rgmu_clock_set(struct adreno_device *adreno_dev,
Loading