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

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

Merge "i2c-qcom-geni: Add support for Multi EE usecase in I2C"

parents 8cce14c1 e024a421
Loading
Loading
Loading
Loading
+13 −19
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ struct geni_i2c_dev {
	struct msm_gpi_dma_async_tx_cb_param rx_cb;
	enum i2c_se_mode se_mode;
	bool cmd_done;
	bool is_shared;
};

struct geni_i2c_err_log {
@@ -420,15 +421,6 @@ static int geni_i2c_gsi_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
	struct geni_i2c_dev *gi2c = i2c_get_adapdata(adap);
	int i, ret = 0, timeout = 0;

	ret = pinctrl_select_state(gi2c->i2c_rsc.geni_pinctrl,
				gi2c->i2c_rsc.geni_gpio_active);
	if (ret) {
		GENI_SE_ERR(gi2c->ipcl, true, gi2c->dev,
			"%s: Error %d pinctrl_select_state active\n",
			__func__, ret);
		return ret;
	}

	if (!gi2c->tx_c) {
		gi2c->tx_c = dma_request_slave_channel(gi2c->dev, "tx");
		if (!gi2c->tx_c) {
@@ -647,8 +639,6 @@ static int geni_i2c_gsi_xfer(struct i2c_adapter *adap, struct i2c_msg msgs[],
geni_i2c_gsi_xfer_out:
	if (!ret && gi2c->err)
		ret = gi2c->err;
	pinctrl_select_state(gi2c->i2c_rsc.geni_pinctrl,
				gi2c->i2c_rsc.geni_gpio_sleep);
	return ret;
}

@@ -907,6 +897,11 @@ static int geni_i2c_probe(struct platform_device *pdev)
		return ret;
	}

	if (of_property_read_bool(pdev->dev.of_node, "qcom,shared")) {
		gi2c->is_shared = true;
		dev_info(&pdev->dev, "Multi-EE usecase\n");
	}

	if (of_property_read_u32(pdev->dev.of_node, "qcom,clk-freq-out",
				&gi2c->i2c_rsc.clk_freq_out)) {
		dev_info(&pdev->dev,
@@ -984,12 +979,14 @@ static int geni_i2c_runtime_suspend(struct device *dev)
{
	struct geni_i2c_dev *gi2c = dev_get_drvdata(dev);

	if (gi2c->se_mode == FIFO_SE_DMA) {
	if (gi2c->se_mode == FIFO_SE_DMA)
		disable_irq(gi2c->irq);
		se_geni_resources_off(&gi2c->i2c_rsc);
	} else {
		/* GPIO is set to sleep state already. So just clocks off */

	if (gi2c->is_shared) {
		/* Do not unconfigure GPIOs if shared se */
		se_geni_clks_off(&gi2c->i2c_rsc);
	} else {
		se_geni_resources_off(&gi2c->i2c_rsc);
	}
	return 0;
}
@@ -1006,10 +1003,7 @@ static int geni_i2c_runtime_resume(struct device *dev)
		gi2c->ipcl = ipc_log_context_create(2, ipc_name, 0);
	}

	if (gi2c->se_mode != GSI_ONLY)
	ret = se_geni_resources_on(&gi2c->i2c_rsc);
	else
		ret = se_geni_clks_on(&gi2c->i2c_rsc);

	if (ret)
		return ret;