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

Commit 8bf33475 authored by Subramanian Ananthanarayanan's avatar Subramanian Ananthanarayanan
Browse files

pci: msm: Return -EDEFER when i2c is not probed



Change is to reutrn -EDEFER error when i2c is not probed and delay
PCIE probe. I2C probe is gettting called post pcie enumeration
and this results in i2c de-emphasis settings not being applied.
Pine doesn't enumerate as these settings are not applied.

Change-Id: I1ac966b26c65f44afb32987927558209bf8787a7
Signed-off-by: default avatarSubramanian Ananthanarayanan <quic_skananth@quicinc.com>
parent 631faf6b
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -5941,6 +5941,12 @@ static int msm_pcie_i2c_ctrl_init(struct msm_pcie_dev_t *pcie_dev)
		PCIE_DBG(pcie_dev, "PCIe: RC%d: No i2c phandle found\n",
			 pcie_dev->rc_idx);
		return 0;
	} else {
		if (!i2c_ctrl->client) {
			PCIE_DBG(pcie_dev, "PCIe: RC%d: No i2c probe yet\n",
				 pcie_dev->rc_idx);
			return -EPROBE_DEFER;
		}
	}

	i2c_client_node = of_get_child_by_name(of_node, "pcie_i2c_ctrl");
@@ -6230,6 +6236,10 @@ static int msm_pcie_probe(struct platform_device *pdev)

	dev_set_drvdata(&pdev->dev, pcie_dev);

	ret = msm_pcie_i2c_ctrl_init(pcie_dev);
	if (ret)
		goto decrease_rc_num;

	ret = msm_pcie_get_resources(pcie_dev, pcie_dev->pdev);
	if (ret)
		goto decrease_rc_num;
@@ -6244,6 +6254,7 @@ static int msm_pcie_probe(struct platform_device *pdev)
	else
		pcie_dev->use_pinctrl = true;


	if (pcie_dev->use_pinctrl) {
		pcie_dev->pins_default = pinctrl_lookup_state(pcie_dev->pinctrl,
								"default");
@@ -6296,8 +6307,6 @@ static int msm_pcie_probe(struct platform_device *pdev)
				pcie_dev->rc_idx, ret);
	}

	msm_pcie_i2c_ctrl_init(pcie_dev);

	msm_pcie_sysfs_init(pcie_dev);

	pcie_dev->drv_ready = true;
@@ -7070,12 +7079,12 @@ static int pcie_i2c_ctrl_probe(struct i2c_client *client,

	if (client_id == I2C_CLIENT_ID_NTN3) {
		i2c_ctrl = &msm_pcie_dev[rc_index].i2c_ctrl;
		i2c_ctrl->client = client;
		i2c_ctrl->client_i2c_read = ntn3_i2c_read;
		i2c_ctrl->client_i2c_write = ntn3_i2c_write;
		i2c_ctrl->client_i2c_reset = ntn3_ep_reset_ctrl;
		i2c_ctrl->client_i2c_dump_regs = ntn3_dump_regs;
		i2c_ctrl->client_i2c_de_emphasis_wa = ntn3_de_emphasis_wa;
		i2c_ctrl->client = client;
	} else {
		dev_err(&client->dev, "invalid client id %d\n", client_id);
	}