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

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

Merge "soc: qcom: dcc_v2: remove clock support"

parents 3b891f51 33de408e
Loading
Loading
Loading
Loading
+0 −111
Original line number Diff line number Diff line
@@ -23,8 +23,6 @@
#include <soc/qcom/memory_dump.h>
#include <soc/qcom/scm.h>
#include <dt-bindings/soc/qcom,dcc_v2.h>
#include <linux/clk.h>
#include <dt-bindings/clock/qcom,aop-qmp.h>

#define TIMEOUT_US		(100)

@@ -136,8 +134,6 @@ struct dcc_drvdata {
	struct mutex		mutex;
	void __iomem		*ram_base;
	uint32_t		ram_size;
	struct clk		*clk;
	struct clk		*xo_clk;
	uint32_t		ram_offset;
	enum dcc_data_sink	data_sink;
	enum dcc_func_type	func_type[DCC_MAX_LINK_LIST];
@@ -220,22 +216,6 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata)

	mutex_lock(&drvdata->mutex);

	if (drvdata->clk) {
		ret = clk_prepare_enable(drvdata->xo_clk);
		if (ret) {
			dev_err(drvdata->dev, "DCC xo clk enable failed\n");
			mutex_unlock(&drvdata->mutex);
			return ret;
		}

		ret = clk_prepare_enable(drvdata->clk);
		if (ret) {
			dev_err(drvdata->dev, "DCC clk enable failed\n");
			mutex_unlock(&drvdata->mutex);
			return ret;
		}
	}

	if (!dcc_ready(drvdata)) {
		dev_err(drvdata->dev, "DCC is not ready\n");
		ret = -EBUSY;
@@ -262,10 +242,6 @@ static int dcc_sw_trigger(struct dcc_drvdata *drvdata)
	ret = dcc_read_status(drvdata);

err:
	if (drvdata->clk) {
		clk_disable_unprepare(drvdata->clk);
		clk_disable_unprepare(drvdata->xo_clk);
	}
	mutex_unlock(&drvdata->mutex);
	return ret;
}
@@ -622,19 +598,6 @@ static int dcc_enable(struct dcc_drvdata *drvdata)

	mutex_lock(&drvdata->mutex);

	if (drvdata->clk) {
		ret = clk_prepare_enable(drvdata->xo_clk);
		if (ret) {
			dev_info(drvdata->dev, "DCC xo clk enable failed\n");
			goto err;
		}

		ret = clk_prepare_enable(drvdata->clk);
		if (ret) {
			dev_info(drvdata->dev, "DCC clk enable failed\n");
			goto err;
		}
	}
	memset_io(drvdata->ram_base, 0xDE, drvdata->ram_size);

	for (list = 0; list < DCC_MAX_LINK_LIST; list++) {
@@ -650,10 +613,6 @@ static int dcc_enable(struct dcc_drvdata *drvdata)
		ret = __dcc_ll_cfg(drvdata, list);
		if (ret) {
			dev_info(drvdata->dev, "DCC ram programming failed\n");
			if (drvdata->clk && !drvdata->enable[list]) {
				clk_disable_unprepare(drvdata->clk);
				clk_disable_unprepare(drvdata->xo_clk);
			}
			goto err;
		}

@@ -722,10 +681,6 @@ static void dcc_disable(struct dcc_drvdata *drvdata)
	drvdata->ram_cfg = 0;
	drvdata->ram_start = 0;

	if (drvdata->clk) {
		clk_disable_unprepare(drvdata->clk);
		clk_disable_unprepare(drvdata->xo_clk);
	}
	mutex_unlock(&drvdata->mutex);
}

@@ -745,24 +700,6 @@ static ssize_t dcc_curr_list(struct device *dev,

	mutex_lock(&drvdata->mutex);

	if (drvdata->clk) {
		int ret = clk_prepare_enable(drvdata->xo_clk);

		if (ret) {
			dev_err(drvdata->dev, "DCC xo clk enable failed\n");
			mutex_unlock(&drvdata->mutex);
			return -EINVAL;
		}


		ret = clk_prepare_enable(drvdata->clk);
		if (ret) {
			dev_err(drvdata->dev, "DCC clk enable failed\n");
			mutex_unlock(&drvdata->mutex);
			return -EINVAL;
		}
	}

	lock_reg = dcc_readl(drvdata, DCC_LL_LOCK(val));
	if (lock_reg & 0x1) {
		dev_err(drvdata->dev, "DCC linked list is already configured\n");
@@ -770,10 +707,6 @@ static ssize_t dcc_curr_list(struct device *dev,
		return -EINVAL;
	}
	drvdata->curr_list = val;
	if (drvdata->clk) {
		clk_disable_unprepare(drvdata->clk);
		clk_disable_unprepare(drvdata->xo_clk);
	}
	mutex_unlock(&drvdata->mutex);

	return size;
@@ -1508,7 +1441,6 @@ static int dcc_sram_open(struct inode *inode, struct file *file)
static ssize_t dcc_sram_read(struct file *file, char __user *data,
			     size_t len, loff_t *ppos)
{
	int ret = 0;
	unsigned char *buf;
	struct dcc_drvdata *drvdata = file->private_data;

@@ -1523,26 +1455,8 @@ static ssize_t dcc_sram_read(struct file *file, char __user *data,
	if (!buf)
		return -ENOMEM;

	if (drvdata->clk) {
		ret = clk_prepare_enable(drvdata->xo_clk);
		if (ret) {
			kfree(buf);
			return ret;
		}
		ret = clk_prepare_enable(drvdata->clk);
		if (ret) {
			kfree(buf);
			return ret;
		}
	}

	memcpy_fromio(buf, (drvdata->ram_base + *ppos), len);

	if (drvdata->clk) {
		clk_disable_unprepare(drvdata->clk);
		clk_disable_unprepare(drvdata->xo_clk);
	}

	if (copy_to_user(data, buf, len)) {
		dev_err(drvdata->dev,
			"DCC: Couldn't copy all data to user\n");
@@ -1714,26 +1628,6 @@ static int dcc_probe(struct platform_device *pdev)
	drvdata->dev = &pdev->dev;
	platform_set_drvdata(pdev, drvdata);

	if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) {
		drvdata->clk = devm_clk_get(dev, "dcc_clk");
		drvdata->xo_clk = devm_clk_get(dev, "dcc_xo_clk");
		if (IS_ERR(drvdata->clk) && IS_ERR(drvdata->xo_clk)) {
			dev_info(dev, "devm_clk_get failed, probing deffered\n");
			return -EPROBE_DEFER;
		}
		ret = clk_prepare_enable(drvdata->xo_clk);
		if (ret) {
			dev_err(dev, "xo clk prepare enable failed\n");
			return -EINVAL;
		}

		ret = clk_prepare_enable(drvdata->clk);
		if (ret) {
			dev_err(dev, "clk prepare enable failed\n");
			return -EINVAL;
		}
	}

	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "dcc-base");
	if (!res)
		return -EINVAL;
@@ -1767,11 +1661,6 @@ static int dcc_probe(struct platform_device *pdev)

	memset_io(drvdata->ram_base, 0, drvdata->ram_size);

	if (of_property_read_bool(pdev->dev.of_node, "clk-enable")) {
		clk_disable_unprepare(drvdata->clk);
		clk_disable_unprepare(drvdata->xo_clk);
	}

	drvdata->data_sink = DCC_DATA_SINK_SRAM;
	ret = of_property_read_string(pdev->dev.of_node, "qcom,data-sink",
				      &data_sink);