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

Commit d5e9bd5a authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "usb: phy: snps: Pass param override reg values from device tree"

parents 76e5643d 3009721e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -24,6 +24,9 @@ Required properties:
 - reset-names: reset signal name strings sorted in the same order as the resets
   property.

Optional properties:
 - qcom,param-override-seq: parameter override sequence with value, reg offset pair.

Example:
	hsphy@f9200000 {
		compatible = "qcom,usb-hsphy-snps-femto";
@@ -32,6 +35,7 @@ Example:
		vdda18-supply = <&pm8941_l6>;
		vdda33-supply = <&pm8941_l24>;
		qcom,vdd-voltage-level = <0 872000 872000>;
		qcom,param-override-seq = <0x43 0x70>;
	};

SSUSB-QMP PHY
+36 −0
Original line number Diff line number Diff line
@@ -96,6 +96,9 @@ struct msm_hsphy {
	bool			suspended;
	bool			cable_connected;

	int			*param_override_seq;
	int			param_override_seq_cnt;

	/* emulation targets specific */
	void __iomem		*emu_phy_base;
	int			*emu_init_seq;
@@ -381,6 +384,11 @@ static int msm_hsphy_init(struct usb_phy *uphy)
	msm_usb_write_readback(phy->base, USB2_PHY_USB_PHY_HS_PHY_CTRL1,
				VBUSVLDEXT0, VBUSVLDEXT0);

	/* set parameter ovrride  if needed */
	if (phy->param_override_seq)
		hsusb_phy_write_seq(phy->base, phy->param_override_seq,
				phy->param_override_seq_cnt, 0);

	msm_usb_write_readback(phy->base, USB2_PHY_USB_PHY_HS_PHY_CTRL_COMMON2,
				VREGBYPASS, VREGBYPASS);

@@ -576,6 +584,34 @@ static int msm_hsphy_probe(struct platform_device *pdev)
		}
	}

	phy->param_override_seq_cnt = of_property_count_elems_of_size(
					dev->of_node,
					"qcom,param-override-seq",
					sizeof(*phy->param_override_seq));
	if (phy->param_override_seq_cnt > 0) {
		phy->param_override_seq = devm_kcalloc(dev,
					phy->param_override_seq_cnt,
					sizeof(*phy->param_override_seq),
					GFP_KERNEL);
		if (!phy->param_override_seq)
			return -ENOMEM;

		if (phy->param_override_seq_cnt % 2) {
			dev_err(dev, "invalid param_override_seq_len\n");
			return -EINVAL;
		}

		ret = of_property_read_u32_array(dev->of_node,
				"qcom,param-override-seq",
				phy->param_override_seq,
				phy->param_override_seq_cnt);
		if (ret) {
			dev_err(dev, "qcom,param-override-seq read failed %d\n",
				ret);
			return ret;
		}
	}

	ret = of_property_read_u32_array(dev->of_node, "qcom,vdd-voltage-level",
					 (u32 *) phy->vdd_levels,
					 ARRAY_SIZE(phy->vdd_levels));