Commit 264dac74 authored by Johan Hovold's avatar Johan Hovold Committed by Vinod Koul
Browse files

phy: qcom-qmp-usb: drop legacy DT workaround



Commit 5e17b95d ("phy: qcom-qmp: Utilize fully-specified DT
registers") added a workaround for legacy devicetrees which did not
specify register regions for the second lane of some dual-lane PHYs.

At the time, the only two dual-lane PHYs supported by mainline were
"qcom,sdm845-qmp-usb3-phy" and "qcom,sdm845-qmp-ufs-phy" and they had
been added to the binding less than six months before the binding was
fixed.

Presumably no one is using four-year old SDM845 dtbs with mainline
anymore so drop the workaround for malformed devicetrees. In the
unlikely event that anyone complains, we can consider reverting.

Signed-off-by: default avatarJohan Hovold <johan+linaro@kernel.org>
Link: https://lore.kernel.org/r/20220916102340.11520-12-johan+linaro@kernel.org


Signed-off-by: default avatarVinod Koul <vkoul@kernel.org>
parent 63825558
Loading
Loading
Loading
Loading
+6 −21
Original line number Diff line number Diff line
@@ -66,9 +66,6 @@
#define POWER_DOWN_DELAY_US_MIN			10
#define POWER_DOWN_DELAY_US_MAX			11

/* Define the assumed distance between lanes for underspecified device trees. */
#define QMP_PHY_LEGACY_LANE_STRIDE		0x400

struct qmp_phy_init_tbl {
	unsigned int offset;
	unsigned int val;
@@ -2667,28 +2664,16 @@ int qmp_usb_create(struct device *dev, struct device_node *np, int id,
	if (cfg->pcs_usb_offset)
		qphy->pcs_usb = qphy->pcs + cfg->pcs_usb_offset;

	/*
	 * If this is a dual-lane PHY, then there should be registers for the
	 * second lane. Some old device trees did not specify this, so fall
	 * back to old legacy behavior of assuming they can be reached at an
	 * offset from the first lane.
	 */
	if (cfg->is_dual_lane_phy) {
		qphy->tx2 = devm_of_iomap(dev, np, 3, NULL);
		qphy->rx2 = devm_of_iomap(dev, np, 4, NULL);
		if (IS_ERR(qphy->tx2) || IS_ERR(qphy->rx2)) {
			dev_warn(dev,
				 "Underspecified device tree, falling back to legacy register regions\n");
		if (IS_ERR(qphy->tx2))
			return PTR_ERR(qphy->tx2);

			/* In the old version, pcs_misc is at index 3. */
			qphy->pcs_misc = qphy->tx2;
			qphy->tx2 = qphy->tx + QMP_PHY_LEGACY_LANE_STRIDE;
			qphy->rx2 = qphy->rx + QMP_PHY_LEGACY_LANE_STRIDE;
		qphy->rx2 = devm_of_iomap(dev, np, 4, NULL);
		if (IS_ERR(qphy->rx2))
			return PTR_ERR(qphy->rx2);

		} else {
		qphy->pcs_misc = devm_of_iomap(dev, np, 5, NULL);
		}

	} else {
		qphy->pcs_misc = devm_of_iomap(dev, np, 3, NULL);
	}