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

Commit 65f037e8 authored by Lucas Stach's avatar Lucas Stach
Browse files

drm/etnaviv: add support for slave interface clock



The slave interface clock is a clock input found on newer cores to gate
the register interface. For now we simply ungate it when the GPU is in
active state.

Signed-off-by: default avatarLucas Stach <l.stach@pengutronix.de>
parent 4df3000e
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -1383,6 +1383,12 @@ static int etnaviv_gpu_clk_enable(struct etnaviv_gpu *gpu)
{
	int ret;

	if (gpu->clk_reg) {
		ret = clk_prepare_enable(gpu->clk_reg);
		if (ret)
			return ret;
	}

	if (gpu->clk_bus) {
		ret = clk_prepare_enable(gpu->clk_bus);
		if (ret)
@@ -1421,6 +1427,8 @@ static int etnaviv_gpu_clk_disable(struct etnaviv_gpu *gpu)
		clk_disable_unprepare(gpu->clk_core);
	if (gpu->clk_bus)
		clk_disable_unprepare(gpu->clk_bus);
	if (gpu->clk_reg)
		clk_disable_unprepare(gpu->clk_reg);

	return 0;
}
@@ -1676,6 +1684,11 @@ static int etnaviv_gpu_platform_probe(struct platform_device *pdev)
	}

	/* Get Clocks: */
	gpu->clk_reg = devm_clk_get(&pdev->dev, "reg");
	DBG("clk_reg: %p", gpu->clk_reg);
	if (IS_ERR(gpu->clk_reg))
		gpu->clk_reg = NULL;

	gpu->clk_bus = devm_clk_get(&pdev->dev, "bus");
	DBG("clk_bus: %p", gpu->clk_bus);
	if (IS_ERR(gpu->clk_bus))
+1 −0
Original line number Diff line number Diff line
@@ -147,6 +147,7 @@ struct etnaviv_gpu {

	/* Power Control: */
	struct clk *clk_bus;
	struct clk *clk_reg;
	struct clk *clk_core;
	struct clk *clk_shader;