linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [v4 0/3] Add QCOM SNPS PHY overriding params support
@ 2022-05-11 15:26 Krishna Kurapati
  2022-05-11 15:26 ` [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings Krishna Kurapati
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Krishna Kurapati @ 2022-05-11 15:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Andy Gross, Bjorn Andersson,
	Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Krishna Kurapati

Added support for overriding tuning parameters in QCOM SNPS PHY
from device tree.

changes in v4:
Fixed nitpicks in code.
Initial compliance test results showed overshoot in the middle of eye
diagram. The current dt values were put in place to correct it and fix
overshoot issue.

changes in v3:
Added support for phy tuning parameters to be represented in bps and
corresponding register values to be written are obtained by traversing
through data map declared in the driver.

changes in v2:
Reading the individual fields in each overriding register from
device tree.

Krishna Kurapati (2):
  phy: qcom-snps: Add support for overriding phy tuning parameters
  arm64: dts: qcom: sc7280: Update SNPS Phy params for SC7280 IDP device

Sandeep Maheswaram (1):
  dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params
    bindings

 .../bindings/phy/qcom,usb-snps-femto-v2.yaml       |  87 +++++++
 arch/arm64/boot/dts/qcom/sc7280-idp.dtsi           |   6 +
 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c      | 267 ++++++++++++++++++++-
 3 files changed, 358 insertions(+), 2 deletions(-)

-- 
2.7.4


^ permalink raw reply	[flat|nested] 16+ messages in thread

* [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-11 15:26 [v4 0/3] Add QCOM SNPS PHY overriding params support Krishna Kurapati
@ 2022-05-11 15:26 ` Krishna Kurapati
  2022-05-11 18:19   ` Krzysztof Kozlowski
  2022-05-11 15:26 ` [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters Krishna Kurapati
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 16+ messages in thread
From: Krishna Kurapati @ 2022-05-11 15:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Andy Gross, Bjorn Andersson,
	Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram,
	Krishna Kurapati

From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>

Add device tree bindings for SNPS phy tuning parameters.

Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
---
 .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
 1 file changed, 87 insertions(+)

diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
index 1ce251d..70efffe 100644
--- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
+++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
@@ -53,6 +53,93 @@ properties:
   vdda33-supply:
     description: phandle to the regulator 3.3V supply node.
 
+  qcom,hs-disconnect-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the voltage level for the threshold used to
+      detect a disconnect event at the host. Possible values are.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,squelch-detector-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the voltage level for the threshold used to
+      detect valid high-speed data.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,hs-amplitude-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the high-speed DC level voltage.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,pre-emphasis-duration-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This signal controls the duration for which the
+      HS pre-emphasis current is sourced onto DP<#> or DM<#>.
+      The HS Transmitter pre-emphasis duration is defined in terms of
+      unit amounts. One unit of pre-emphasis duration is approximately
+      650 ps and is defined as 1X pre-emphasis duration.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,pre-emphasis-amplitude-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This signal controls the amount of current sourced to
+      DP<#> and DM<#> after a J-to-K or K-to-J transition.
+      The HS Transmitter pre-emphasis current is defined in terms of unit
+      amounts. One unit amount is approximately 2 mA and is defined as
+      1X pre-emphasis current.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,hs-rise-fall-time-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the rise/fall times of the high-speed waveform.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,hs-crossover-voltage-mv:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the voltage at which the DP<#> and DM<#>
+      signals cross while transmitting in HS mode.
+      The values defined are in milli volts. The hardware accepts only
+      discrete values. The value closest to the provided input will be
+      chosen as the override value for this param.
+
+  qcom,hs-output-impedance-mohm:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      In some applications, there can be significant series resistance
+      on the D+ and D- paths between the transceiver and cable. This adjusts
+      the driver source impedance to compensate for added series
+      resistance on the USB. The values defined are in milli ohms.
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
+  qcom,ls-fs-output-impedance-bps:
+    $ref: /schemas/types.yaml#/definitions/int32
+    description:
+      This adjusts the low- and full-speed single-ended source
+      impedance while driving high. The following adjustment values are based
+      on nominal process, voltage, and temperature.
+      The values defined are in multiples of basis points (1bp = 0.01%).
+      The hardware accepts only discrete values. The value closest to the
+      provided input will be chosen as the override value for this param.
+
 required:
   - compatible
   - reg
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters
  2022-05-11 15:26 [v4 0/3] Add QCOM SNPS PHY overriding params support Krishna Kurapati
  2022-05-11 15:26 ` [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings Krishna Kurapati
@ 2022-05-11 15:26 ` Krishna Kurapati
  2022-05-11 21:04   ` kernel test robot
  2022-05-12  1:29   ` kernel test robot
  2022-05-11 15:26 ` [v4 3/3] arm64: dts: qcom: sc7280: Update SNPS Phy params for SC7280 IDP device Krishna Kurapati
  2022-05-11 18:16 ` [v4 0/3] Add QCOM SNPS PHY overriding params support Krzysztof Kozlowski
  3 siblings, 2 replies; 16+ messages in thread
From: Krishna Kurapati @ 2022-05-11 15:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Andy Gross, Bjorn Andersson,
	Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Krishna Kurapati

Add support for overriding electrical signal tuning parameters for
SNPS HS Phy.

Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
Reported-by: kernel test robot <lkp@intel.com>
---
 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c | 267 +++++++++++++++++++++++++-
 1 file changed, 265 insertions(+), 2 deletions(-)

diff --git a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
index 5d20378..7d154e7 100644
--- a/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
+++ b/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c
@@ -52,6 +52,12 @@
 #define USB2_SUSPEND_N				BIT(2)
 #define USB2_SUSPEND_N_SEL			BIT(3)
 
+#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X0		(0x6c)
+#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X1		(0x70)
+#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X2		(0x74)
+#define USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X3		(0x78)
+#define PARAM_OVRD_MASK				0xFF
+
 #define USB2_PHY_USB_PHY_CFG0			(0x94)
 #define UTMI_PHY_DATAPATH_CTRL_OVERRIDE_EN	BIT(0)
 #define UTMI_PHY_CMN_CTRL_OVERRIDE_EN		BIT(1)
@@ -60,12 +66,76 @@
 #define REFCLK_SEL_MASK				GENMASK(1, 0)
 #define REFCLK_SEL_DEFAULT			(0x2 << 0)
 
+#define HS_DISCONNECT_MASK			GENMASK(2, 0)
+
+#define SQUELCH_DETECTOR_MASK			GENMASK(7, 5)
+
+#define HS_AMPLITUDE_MASK			GENMASK(3, 0)
+
+#define PREEMPHASIS_DURATION_MASK		BIT(5)
+
+#define PREEMPHASIS_AMPLITUDE_MASK		GENMASK(7, 6)
+
+#define HS_RISE_FALL_MASK			GENMASK(1, 0)
+
+#define HS_CROSSOVER_VOLTAGE_MASK		GENMASK(3, 2)
+
+#define HS_OUTPUT_IMPEDANCE_MASK		GENMASK(5, 4)
+
+#define LS_FS_OUTPUT_IMPEDANCE_MASK		GENMASK(3, 0)
+
+
 static const char * const qcom_snps_hsphy_vreg_names[] = {
 	"vdda-pll", "vdda33", "vdda18",
 };
 
 #define SNPS_HS_NUM_VREGS		ARRAY_SIZE(qcom_snps_hsphy_vreg_names)
 
+struct override_param {
+	s32	value;
+	u8	reg;
+};
+
+#define OVERRIDE_PARAM(bps, val)\
+{				\
+	.value = bps,		\
+	.reg = val,		\
+}
+
+struct override_param_map {
+	struct override_param *param_table;
+	u8 table_size;
+	u8 reg_offset;
+	u8 param_mask;
+};
+
+#define OVERRIDE_PARAM_MAP(table, num_elements, offset, mask)		\
+{									\
+	.param_table = table,						\
+	.table_size = num_elements,					\
+	.reg_offset = offset,						\
+	.param_mask = mask,						\
+}
+
+struct phy_override_seq {
+	bool	need_update;
+	u8	offset;
+	u8	value;
+	u8	mask;
+};
+
+static const char *phy_seq_props[] = {
+	"qcom,hs-disconnect-bps",
+	"qcom,squelch-detector-bps",
+	"qcom,hs-amplitude-bps",
+	"qcom,preemphasis-duration-bps",
+	"qcom,preemphasis-amplitude-bps",
+	"qcom,hs-rise-fall-time-bps",
+	"qcom,hs-crossover-voltage-mv",
+	"qcom,hs-output-impedance-mohm",
+	"qcom,ls-fs-output-impedance-bps",
+};
+
 /**
  * struct qcom_snps_hsphy - snps hs phy attributes
  *
@@ -91,6 +161,7 @@ struct qcom_snps_hsphy {
 
 	bool phy_initialized;
 	enum phy_mode mode;
+	struct phy_override_seq update_seq_cfg[ARRAY_SIZE(phy_seq_props)];
 };
 
 static inline void qcom_snps_hsphy_write_mask(void __iomem *base, u32 offset,
@@ -173,10 +244,147 @@ static int qcom_snps_hsphy_set_mode(struct phy *phy, enum phy_mode mode,
 	return 0;
 }
 
+static struct override_param hs_disconnect_sc7280[] = {
+	OVERRIDE_PARAM(-272, 0),
+	OVERRIDE_PARAM(0, 1),
+	OVERRIDE_PARAM(317, 2),
+	OVERRIDE_PARAM(630, 3),
+	OVERRIDE_PARAM(973, 4),
+	OVERRIDE_PARAM(1332, 5),
+	OVERRIDE_PARAM(1743, 6),
+	OVERRIDE_PARAM(2156, 7),
+};
+
+static struct override_param squelch_det_threshold_sc7280[] = {
+	OVERRIDE_PARAM(-2090, 7),
+	OVERRIDE_PARAM(-1560, 6),
+	OVERRIDE_PARAM(-1030, 5),
+	OVERRIDE_PARAM(-530, 4),
+	OVERRIDE_PARAM(0, 3),
+	OVERRIDE_PARAM(530, 2),
+	OVERRIDE_PARAM(1060, 1),
+	OVERRIDE_PARAM(1590, 0),
+};
+
+static struct override_param hs_amplitude_sc7280[] = {
+	OVERRIDE_PARAM(-660, 0),
+	OVERRIDE_PARAM(-440, 1),
+	OVERRIDE_PARAM(-220, 2),
+	OVERRIDE_PARAM(0, 3),
+	OVERRIDE_PARAM(230, 4),
+	OVERRIDE_PARAM(440, 5),
+	OVERRIDE_PARAM(650, 6),
+	OVERRIDE_PARAM(890, 7),
+	OVERRIDE_PARAM(1110, 8),
+	OVERRIDE_PARAM(1330, 9),
+	OVERRIDE_PARAM(1560, 10),
+	OVERRIDE_PARAM(1780, 11),
+	OVERRIDE_PARAM(2000, 12),
+	OVERRIDE_PARAM(2220, 13),
+	OVERRIDE_PARAM(2430, 14),
+	OVERRIDE_PARAM(2670, 15),
+};
+
+static struct override_param preemphasis_duration_sc7280[] = {
+	OVERRIDE_PARAM(100, 1),
+	OVERRIDE_PARAM(200, 0),
+};
+
+static struct override_param preemphasis_amplitude_sc7280[] = {
+	OVERRIDE_PARAM(100, 1),
+	OVERRIDE_PARAM(200, 2),
+	OVERRIDE_PARAM(300, 3),
+	OVERRIDE_PARAM(400, 0),
+};
+
+static struct override_param hs_rise_fall_time_sc7280[] = {
+	OVERRIDE_PARAM(-4100, 3),
+	OVERRIDE_PARAM(0, 2),
+	OVERRIDE_PARAM(2810, 1),
+	OVERRIDE_PARAM(5430, 0),
+};
+
+static struct override_param hs_crossover_voltage_sc7280[] = {
+	OVERRIDE_PARAM(-31, 1),
+	OVERRIDE_PARAM(28, 2),
+	OVERRIDE_PARAM(0, 3),
+};
+
+static struct override_param hs_output_impedance_sc7280[] = {
+	OVERRIDE_PARAM(-2300, 3),
+	OVERRIDE_PARAM(0, 2),
+	OVERRIDE_PARAM(2600, 1),
+	OVERRIDE_PARAM(6100, 0),
+};
+
+static struct override_param ls_fs_output_impedance_sc7280[] = {
+	OVERRIDE_PARAM(-1053, 15),
+	OVERRIDE_PARAM(-557, 7),
+	OVERRIDE_PARAM(0, 3),
+	OVERRIDE_PARAM(612, 1),
+	OVERRIDE_PARAM(1310, 0),
+};
+
+struct override_param_map sc7280_idp[] = {
+	OVERRIDE_PARAM_MAP(
+			hs_disconnect_sc7280,
+			ARRAY_SIZE(hs_disconnect_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X0,
+			HS_DISCONNECT_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			squelch_det_threshold_sc7280,
+			ARRAY_SIZE(squelch_det_threshold_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X0,
+			SQUELCH_DETECTOR_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			hs_amplitude_sc7280,
+			ARRAY_SIZE(hs_amplitude_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X1,
+			HS_AMPLITUDE_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			preemphasis_duration_sc7280,
+			ARRAY_SIZE(preemphasis_duration_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X1,
+			PREEMPHASIS_DURATION_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			preemphasis_amplitude_sc7280,
+			ARRAY_SIZE(preemphasis_amplitude_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X1,
+			PREEMPHASIS_AMPLITUDE_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			hs_rise_fall_time_sc7280,
+			ARRAY_SIZE(hs_rise_fall_time_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X2,
+			HS_RISE_FALL_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			hs_crossover_voltage_sc7280,
+			ARRAY_SIZE(hs_crossover_voltage_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X2,
+			HS_CROSSOVER_VOLTAGE_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			hs_output_impedance_sc7280,
+			ARRAY_SIZE(hs_output_impedance_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X2,
+			HS_OUTPUT_IMPEDANCE_MASK),
+
+	OVERRIDE_PARAM_MAP(
+			ls_fs_output_impedance_sc7280,
+			ARRAY_SIZE(ls_fs_output_impedance_sc7280),
+			USB2_PHY_USB_PHY_HS_PHY_OVERRIDE_X3,
+			LS_FS_OUTPUT_IMPEDANCE_MASK),
+};
+
 static int qcom_snps_hsphy_init(struct phy *phy)
 {
 	struct qcom_snps_hsphy *hsphy = phy_get_drvdata(phy);
-	int ret;
+	int ret, i;
 
 	dev_vdbg(&phy->dev, "%s(): Initializing SNPS HS phy\n", __func__);
 
@@ -223,6 +431,14 @@ static int qcom_snps_hsphy_init(struct phy *phy)
 	qcom_snps_hsphy_write_mask(hsphy->base, USB2_PHY_USB_PHY_HS_PHY_CTRL1,
 					VBUSVLDEXT0, VBUSVLDEXT0);
 
+	for (i = 0; i < ARRAY_SIZE(hsphy->update_seq_cfg); i++) {
+		if (hsphy->update_seq_cfg[i].need_update)
+			qcom_snps_hsphy_write_mask(hsphy->base,
+					hsphy->update_seq_cfg[i].offset,
+					hsphy->update_seq_cfg[i].mask,
+					hsphy->update_seq_cfg[i].value);
+	}
+
 	qcom_snps_hsphy_write_mask(hsphy->base,
 					USB2_PHY_USB_PHY_HS_PHY_CTRL_COMMON2,
 					VREGBYPASS, VREGBYPASS);
@@ -280,7 +496,10 @@ static const struct phy_ops qcom_snps_hsphy_gen_ops = {
 static const struct of_device_id qcom_snps_hsphy_of_match_table[] = {
 	{ .compatible	= "qcom,sm8150-usb-hs-phy", },
 	{ .compatible	= "qcom,usb-snps-hs-5nm-phy", },
-	{ .compatible	= "qcom,usb-snps-hs-7nm-phy", },
+	{
+		.compatible	= "qcom,usb-snps-hs-7nm-phy",
+		.data		= &sc7280_idp,
+	},
 	{ .compatible	= "qcom,usb-snps-femto-v2-phy",	},
 	{ }
 };
@@ -291,6 +510,49 @@ static const struct dev_pm_ops qcom_snps_hsphy_pm_ops = {
 			   qcom_snps_hsphy_runtime_resume, NULL)
 };
 
+static void qcom_snps_hsphy_override_param_update_val(
+			const struct override_param_map map,
+			s32 dt_val, struct phy_override_seq *seq_entry)
+{
+	int i;
+
+	/*
+	 * Param table for each param is in increasing order
+	 * of dt values. We need to iterate over the list to
+	 * select the entry that has equal or the next highest value.
+	 */
+	for (i = 0 ; i < map.table_size-1; i++) {
+		if (map.param_table[i].value >= dt_val)
+			break;
+	}
+
+	seq_entry->need_update = true;
+	seq_entry->offset = map.reg_offset;
+	seq_entry->mask = map.param_mask;
+	seq_entry->value =  map.param_table[i].reg << __ffs(map.param_mask);
+}
+
+static void qcom_snps_hsphy_read_override_param_seq(struct device *dev)
+{
+	struct device_node *node = dev->of_node;
+	s32 val;
+	int ret, i;
+	struct qcom_snps_hsphy *hsphy;
+	struct override_param_map *cfg = of_device_get_match_data(dev);
+
+	hsphy = dev_get_drvdata(dev);
+
+	for (i = 0; i < ARRAY_SIZE(phy_seq_props); i++) {
+		ret = of_property_read_s32(node, phy_seq_props[i], &val);
+		if (!ret) {
+			dev_dbg(&hsphy->phy->dev, "Read param: %s val: %d\n",
+						phy_seq_props[i], val);
+			qcom_snps_hsphy_override_param_update_val(cfg[i], val,
+						&hsphy->update_seq_cfg[i]);
+		}
+	}
+}
+
 static int qcom_snps_hsphy_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -352,6 +614,7 @@ static int qcom_snps_hsphy_probe(struct platform_device *pdev)
 
 	dev_set_drvdata(dev, hsphy);
 	phy_set_drvdata(generic_phy, hsphy);
+	qcom_snps_hsphy_read_override_param_seq(dev);
 
 	phy_provider = devm_of_phy_provider_register(dev, of_phy_simple_xlate);
 	if (!IS_ERR(phy_provider))
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [v4 3/3] arm64: dts: qcom: sc7280: Update SNPS Phy params for SC7280 IDP device
  2022-05-11 15:26 [v4 0/3] Add QCOM SNPS PHY overriding params support Krishna Kurapati
  2022-05-11 15:26 ` [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings Krishna Kurapati
  2022-05-11 15:26 ` [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters Krishna Kurapati
@ 2022-05-11 15:26 ` Krishna Kurapati
  2022-05-11 18:16 ` [v4 0/3] Add QCOM SNPS PHY overriding params support Krzysztof Kozlowski
  3 siblings, 0 replies; 16+ messages in thread
From: Krishna Kurapati @ 2022-05-11 15:26 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Rob Herring, Andy Gross, Bjorn Andersson,
	Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Krishna Kurapati,
	Sandeep Maheswaram

Overriding the SNPS Phy tuning parameters for SC7280 IDP device.

Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
---
 arch/arm64/boot/dts/qcom/sc7280-idp.dtsi | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
index 5eb6689..bb18f45 100644
--- a/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
+++ b/arch/arm64/boot/dts/qcom/sc7280-idp.dtsi
@@ -325,6 +325,12 @@
 	vdda-pll-supply = <&vreg_l10c_0p8>;
 	vdda33-supply = <&vreg_l2b_3p0>;
 	vdda18-supply = <&vreg_l1c_1p8>;
+	qcom,hs-rise-fall-time-bps = <0>;
+	qcom,squelch-detector-bps = <(-2090)>;
+	qcom,hs-disconnect-bps = <1743>;
+	qcom,hs-amplitude-bps = <1780>;
+	qcom,hs-crossover-voltage-mv = <(-31)>;
+	qcom,hs-output-impedance-mohm = <2600>;
 };
 
 &usb_1_qmpphy {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [v4 0/3] Add QCOM SNPS PHY overriding params support
  2022-05-11 15:26 [v4 0/3] Add QCOM SNPS PHY overriding params support Krishna Kurapati
                   ` (2 preceding siblings ...)
  2022-05-11 15:26 ` [v4 3/3] arm64: dts: qcom: sc7280: Update SNPS Phy params for SC7280 IDP device Krishna Kurapati
@ 2022-05-11 18:16 ` Krzysztof Kozlowski
  3 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-11 18:16 UTC (permalink / raw)
  To: Krishna Kurapati, Krzysztof Kozlowski, Rob Herring, Andy Gross,
	Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala

On 11/05/2022 17:26, Krishna Kurapati wrote:
> Added support for overriding tuning parameters in QCOM SNPS PHY
> from device tree.

Please use proper PATCH title. The easiest is to use git format-patch to
create proper patches.

Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-11 15:26 ` [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings Krishna Kurapati
@ 2022-05-11 18:19   ` Krzysztof Kozlowski
  2022-05-12  5:57     ` Krishna Kurapati PSSNV
  2022-05-13  7:33     ` Krishna Kurapati PSSNV
  0 siblings, 2 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-11 18:19 UTC (permalink / raw)
  To: Krishna Kurapati, Krzysztof Kozlowski, Rob Herring, Andy Gross,
	Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram

On 11/05/2022 17:26, Krishna Kurapati wrote:
> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
> 
> Add device tree bindings for SNPS phy tuning parameters.
> 
> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
> ---
>  .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>  1 file changed, 87 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
> index 1ce251d..70efffe 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
> @@ -53,6 +53,93 @@ properties:
>    vdda33-supply:
>      description: phandle to the regulator 3.3V supply node.
>  
> +  qcom,hs-disconnect-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This adjusts the voltage level for the threshold used to
> +      detect a disconnect event at the host. Possible values are.
> +      The values defined are in multiples of basis points (1bp = 0.01%).

This means there is some minimum and maximum (100%)?

> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,squelch-detector-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This adjusts the voltage level for the threshold used to
> +      detect valid high-speed data.
> +      The values defined are in multiples of basis points (1bp = 0.01%).
> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,hs-amplitude-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This adjusts the high-speed DC level voltage.
> +      The values defined are in multiples of basis points (1bp = 0.01%).
> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,pre-emphasis-duration-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This signal controls the duration for which the
> +      HS pre-emphasis current is sourced onto DP<#> or DM<#>.
> +      The HS Transmitter pre-emphasis duration is defined in terms of
> +      unit amounts. One unit of pre-emphasis duration is approximately
> +      650 ps and is defined as 1X pre-emphasis duration.
> +      The values defined are in multiples of basis points (1bp = 0.01%).
> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,pre-emphasis-amplitude-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This signal controls the amount of current sourced to
> +      DP<#> and DM<#> after a J-to-K or K-to-J transition.
> +      The HS Transmitter pre-emphasis current is defined in terms of unit
> +      amounts. One unit amount is approximately 2 mA and is defined as
> +      1X pre-emphasis current.
> +      The values defined are in multiples of basis points (1bp = 0.01%).
> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,hs-rise-fall-time-bps:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This adjusts the rise/fall times of the high-speed waveform.
> +      The values defined are in multiples of basis points (1bp = 0.01%).
> +      The hardware accepts only discrete values. The value closest to the
> +      provided input will be chosen as the override value for this param.
> +
> +  qcom,hs-crossover-voltage-mv:
> +    $ref: /schemas/types.yaml#/definitions/int32
> +    description:
> +      This adjusts the voltage at which the DP<#> and DM<#>
> +      signals cross while transmitting in HS mode.
> +      The values defined are in milli volts. The hardware accepts only
> +      discrete values. The value closest to the provided input will be
> +      chosen as the override value for this param.
> +
> +  qcom,hs-output-impedance-mohm:
> +    $ref: /schemas/types.yaml#/definitions/int32

Here and in other places, please use standard units. See
dtschema/schemas/property-units.yaml in dtschema repo.


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters
  2022-05-11 15:26 ` [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters Krishna Kurapati
@ 2022-05-11 21:04   ` kernel test robot
  2022-05-12  1:29   ` kernel test robot
  1 sibling, 0 replies; 16+ messages in thread
From: kernel test robot @ 2022-05-11 21:04 UTC (permalink / raw)
  To: Krishna Kurapati, Krzysztof Kozlowski, Rob Herring, Andy Gross,
	Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: kbuild-all, devicetree, linux-arm-msm, linux-usb, linux-kernel,
	linux-phy, quic_pkondeti, quic_ppratap, quic_vpulyala,
	Krishna Kurapati

Hi Krishna,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on robh/for-next]
[also build test WARNING on krzk/for-next linus/master v5.18-rc6 next-20220511]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Krishna-Kurapati/Add-QCOM-SNPS-PHY-overriding-params-support/20220511-232858
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: m68k-allyesconfig (https://download.01.org/0day-ci/archive/20220512/202205120425.gScyEI7N-lkp@intel.com/config)
compiler: m68k-linux-gcc (GCC) 11.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/intel-lab-lkp/linux/commit/48c46f24873c92d3e16904af9e654962d0b923f1
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Krishna-Kurapati/Add-QCOM-SNPS-PHY-overriding-params-support/20220511-232858
        git checkout 48c46f24873c92d3e16904af9e654962d0b923f1
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.3.0 make.cross W=1 O=build_dir ARCH=m68k SHELL=/bin/bash drivers/phy/qualcomm/

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c: In function 'qcom_snps_hsphy_read_override_param_seq':
>> drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c:541:42: warning: initialization discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
     541 |         struct override_param_map *cfg = of_device_get_match_data(dev);
         |                                          ^~~~~~~~~~~~~~~~~~~~~~~~


vim +/const +541 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c

   534	
   535	static void qcom_snps_hsphy_read_override_param_seq(struct device *dev)
   536	{
   537		struct device_node *node = dev->of_node;
   538		s32 val;
   539		int ret, i;
   540		struct qcom_snps_hsphy *hsphy;
 > 541		struct override_param_map *cfg = of_device_get_match_data(dev);
   542	
   543		hsphy = dev_get_drvdata(dev);
   544	
   545		for (i = 0; i < ARRAY_SIZE(phy_seq_props); i++) {
   546			ret = of_property_read_s32(node, phy_seq_props[i], &val);
   547			if (!ret) {
   548				dev_dbg(&hsphy->phy->dev, "Read param: %s val: %d\n",
   549							phy_seq_props[i], val);
   550				qcom_snps_hsphy_override_param_update_val(cfg[i], val,
   551							&hsphy->update_seq_cfg[i]);
   552			}
   553		}
   554	}
   555	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters
  2022-05-11 15:26 ` [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters Krishna Kurapati
  2022-05-11 21:04   ` kernel test robot
@ 2022-05-12  1:29   ` kernel test robot
  1 sibling, 0 replies; 16+ messages in thread
From: kernel test robot @ 2022-05-12  1:29 UTC (permalink / raw)
  To: Krishna Kurapati, Krzysztof Kozlowski, Rob Herring, Andy Gross,
	Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd, Doug Anderson,
	Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: llvm, kbuild-all, devicetree, linux-arm-msm, linux-usb,
	linux-kernel, linux-phy, quic_pkondeti, quic_ppratap,
	quic_vpulyala, Krishna Kurapati

Hi Krishna,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on robh/for-next]
[also build test ERROR on krzk/for-next linus/master v5.18-rc6 next-20220511]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/intel-lab-lkp/linux/commits/Krishna-Kurapati/Add-QCOM-SNPS-PHY-overriding-params-support/20220511-232858
base:   https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git for-next
config: riscv-randconfig-r033-20220509 (https://download.01.org/0day-ci/archive/20220512/202205120931.JrA2orb3-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 18dd123c56754edf62c7042dcf23185c3727610f)
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # install riscv cross compiling tool for clang build
        # apt-get install binutils-riscv64-linux-gnu
        # https://github.com/intel-lab-lkp/linux/commit/48c46f24873c92d3e16904af9e654962d0b923f1
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Krishna-Kurapati/Add-QCOM-SNPS-PHY-overriding-params-support/20220511-232858
        git checkout 48c46f24873c92d3e16904af9e654962d0b923f1
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=riscv SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

>> drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c:541:29: error: initializing 'struct override_param_map *' with an expression of type 'const void *' discards qualifiers [-Werror,-Wincompatible-pointer-types-discards-qualifiers]
           struct override_param_map *cfg = of_device_get_match_data(dev);
                                      ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   1 error generated.


vim +541 drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c

   534	
   535	static void qcom_snps_hsphy_read_override_param_seq(struct device *dev)
   536	{
   537		struct device_node *node = dev->of_node;
   538		s32 val;
   539		int ret, i;
   540		struct qcom_snps_hsphy *hsphy;
 > 541		struct override_param_map *cfg = of_device_get_match_data(dev);
   542	
   543		hsphy = dev_get_drvdata(dev);
   544	
   545		for (i = 0; i < ARRAY_SIZE(phy_seq_props); i++) {
   546			ret = of_property_read_s32(node, phy_seq_props[i], &val);
   547			if (!ret) {
   548				dev_dbg(&hsphy->phy->dev, "Read param: %s val: %d\n",
   549							phy_seq_props[i], val);
   550				qcom_snps_hsphy_override_param_update_val(cfg[i], val,
   551							&hsphy->update_seq_cfg[i]);
   552			}
   553		}
   554	}
   555	

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-11 18:19   ` Krzysztof Kozlowski
@ 2022-05-12  5:57     ` Krishna Kurapati PSSNV
  2022-05-12 10:30       ` Krzysztof Kozlowski
  2022-05-13  7:33     ` Krishna Kurapati PSSNV
  1 sibling, 1 reply; 16+ messages in thread
From: Krishna Kurapati PSSNV @ 2022-05-12  5:57 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram


On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
> On 11/05/2022 17:26, Krishna Kurapati wrote:
>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>
>> Add device tree bindings for SNPS phy tuning parameters.
>>
>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>> ---
>>   .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>   1 file changed, 87 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> index 1ce251d..70efffe 100644
>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> @@ -53,6 +53,93 @@ properties:
>>     vdda33-supply:
>>       description: phandle to the regulator 3.3V supply node.
>>   
>> +  qcom,hs-disconnect-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage level for the threshold used to
>> +      detect a disconnect event at the host. Possible values are.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
> This means there is some minimum and maximum (100%)?

Hi Krzystof,

Yes there are max and min for each parameter (not necessarily 0%/100%)

As an example if we take squelch detector threshold, the register value 
vs actual percentage changer as per data book is as follows :

% change in voltage    |     corresponding reg value

  -20.90%                        |    7
  -15.60%                        |    6
-10.30%                         |    5
-5.30%                           |    4
0%                                  |    3
5.30%                            |    2
10.60%                          |    1
15.90%                          |    0

Here the min and max are 15.9% to -20.9%

The min and max differ for each parameter and might not be necessarily 
0% and 100%
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,squelch-detector-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage level for the threshold used to
>> +      detect valid high-speed data.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-amplitude-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the high-speed DC level voltage.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,pre-emphasis-duration-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This signal controls the duration for which the
>> +      HS pre-emphasis current is sourced onto DP<#> or DM<#>.
>> +      The HS Transmitter pre-emphasis duration is defined in terms of
>> +      unit amounts. One unit of pre-emphasis duration is approximately
>> +      650 ps and is defined as 1X pre-emphasis duration.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,pre-emphasis-amplitude-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This signal controls the amount of current sourced to
>> +      DP<#> and DM<#> after a J-to-K or K-to-J transition.
>> +      The HS Transmitter pre-emphasis current is defined in terms of unit
>> +      amounts. One unit amount is approximately 2 mA and is defined as
>> +      1X pre-emphasis current.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-rise-fall-time-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the rise/fall times of the high-speed waveform.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-crossover-voltage-mv:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage at which the DP<#> and DM<#>
>> +      signals cross while transmitting in HS mode.
>> +      The values defined are in milli volts. The hardware accepts only
>> +      discrete values. The value closest to the provided input will be
>> +      chosen as the override value for this param.
>> +
>> +  qcom,hs-output-impedance-mohm:
>> +    $ref: /schemas/types.yaml#/definitions/int32
> Here and in other places, please use standard units. See
> dtschema/schemas/property-units.yaml in dtschema repo.
>
>
> Best regards,
> Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-12  5:57     ` Krishna Kurapati PSSNV
@ 2022-05-12 10:30       ` Krzysztof Kozlowski
  2022-05-14  6:24         ` Krishna Kurapati PSSNV
  0 siblings, 1 reply; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-12 10:30 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram

On 12/05/2022 07:57, Krishna Kurapati PSSNV wrote:
> 
> On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
>> On 11/05/2022 17:26, Krishna Kurapati wrote:
>>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>
>>> Add device tree bindings for SNPS phy tuning parameters.
>>>
>>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>>> ---
>>>   .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>>   1 file changed, 87 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> index 1ce251d..70efffe 100644
>>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> @@ -53,6 +53,93 @@ properties:
>>>     vdda33-supply:
>>>       description: phandle to the regulator 3.3V supply node.
>>>   
>>> +  qcom,hs-disconnect-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the voltage level for the threshold used to
>>> +      detect a disconnect event at the host. Possible values are.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> This means there is some minimum and maximum (100%)?
> 
> Hi Krzystof,
> 
> Yes there are max and min for each parameter (not necessarily 0%/100%)
> 
> As an example if we take squelch detector threshold, the register value 
> vs actual percentage changer as per data book is as follows :
> 
> % change in voltage    |     corresponding reg value
> 
>   -20.90%                        |    7
>   -15.60%                        |    6
> -10.30%                         |    5
> -5.30%                           |    4
> 0%                                  |    3
> 5.30%                            |    2
> 10.60%                          |    1
> 15.90%                          |    0
> 
> Here the min and max are 15.9% to -20.9%
> 
> The min and max differ for each parameter and might not be necessarily 
> 0% and 100%

Then it seems possible to define minimum and maximum values - please add
them ("minimum: xxxx").


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-11 18:19   ` Krzysztof Kozlowski
  2022-05-12  5:57     ` Krishna Kurapati PSSNV
@ 2022-05-13  7:33     ` Krishna Kurapati PSSNV
  2022-05-13 10:32       ` Krzysztof Kozlowski
  1 sibling, 1 reply; 16+ messages in thread
From: Krishna Kurapati PSSNV @ 2022-05-13  7:33 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram


On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
> On 11/05/2022 17:26, Krishna Kurapati wrote:
>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>
>> Add device tree bindings for SNPS phy tuning parameters.
>>
>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>> ---
>>   .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>   1 file changed, 87 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> index 1ce251d..70efffe 100644
>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>> @@ -53,6 +53,93 @@ properties:
>>     vdda33-supply:
>>       description: phandle to the regulator 3.3V supply node.
>>   
>> +  qcom,hs-disconnect-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage level for the threshold used to
>> +      detect a disconnect event at the host. Possible values are.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
> This means there is some minimum and maximum (100%)?
>
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,squelch-detector-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage level for the threshold used to
>> +      detect valid high-speed data.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-amplitude-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the high-speed DC level voltage.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,pre-emphasis-duration-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This signal controls the duration for which the
>> +      HS pre-emphasis current is sourced onto DP<#> or DM<#>.
>> +      The HS Transmitter pre-emphasis duration is defined in terms of
>> +      unit amounts. One unit of pre-emphasis duration is approximately
>> +      650 ps and is defined as 1X pre-emphasis duration.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,pre-emphasis-amplitude-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This signal controls the amount of current sourced to
>> +      DP<#> and DM<#> after a J-to-K or K-to-J transition.
>> +      The HS Transmitter pre-emphasis current is defined in terms of unit
>> +      amounts. One unit amount is approximately 2 mA and is defined as
>> +      1X pre-emphasis current.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-rise-fall-time-bps:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the rise/fall times of the high-speed waveform.
>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> +      The hardware accepts only discrete values. The value closest to the
>> +      provided input will be chosen as the override value for this param.
>> +
>> +  qcom,hs-crossover-voltage-mv:
>> +    $ref: /schemas/types.yaml#/definitions/int32
>> +    description:
>> +      This adjusts the voltage at which the DP<#> and DM<#>
>> +      signals cross while transmitting in HS mode.
>> +      The values defined are in milli volts. The hardware accepts only
>> +      discrete values. The value closest to the provided input will be
>> +      chosen as the override value for this param.
>> +
>> +  qcom,hs-output-impedance-mohm:
>> +    $ref: /schemas/types.yaml#/definitions/int32
> Here and in other places, please use standard units. See
> dtschema/schemas/property-units.yaml in dtschema repo.
>
>
> Best regards,
> Krzysztof

Hi Krzystof, thanks for the input.

I see there are microvolt and microohm units present in 
schemas/property-units.yaml

Would it be possible to add bps (basis point) to the list of standard 
units if it makes sense to use it ?

Regards,

Krishna,


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-13  7:33     ` Krishna Kurapati PSSNV
@ 2022-05-13 10:32       ` Krzysztof Kozlowski
  2022-05-13 12:20         ` Krzysztof Kozlowski
  0 siblings, 1 reply; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-13 10:32 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram

On 13/05/2022 09:33, Krishna Kurapati PSSNV wrote:
> 
> On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
>> On 11/05/2022 17:26, Krishna Kurapati wrote:
>>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>
>>> Add device tree bindings for SNPS phy tuning parameters.
>>>
>>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>>> ---
>>>   .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>>   1 file changed, 87 insertions(+)
>>>
>>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> index 1ce251d..70efffe 100644
>>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>> @@ -53,6 +53,93 @@ properties:
>>>     vdda33-supply:
>>>       description: phandle to the regulator 3.3V supply node.
>>>   
>>> +  qcom,hs-disconnect-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the voltage level for the threshold used to
>>> +      detect a disconnect event at the host. Possible values are.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>> This means there is some minimum and maximum (100%)?
>>
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,squelch-detector-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the voltage level for the threshold used to
>>> +      detect valid high-speed data.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,hs-amplitude-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the high-speed DC level voltage.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,pre-emphasis-duration-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This signal controls the duration for which the
>>> +      HS pre-emphasis current is sourced onto DP<#> or DM<#>.
>>> +      The HS Transmitter pre-emphasis duration is defined in terms of
>>> +      unit amounts. One unit of pre-emphasis duration is approximately
>>> +      650 ps and is defined as 1X pre-emphasis duration.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,pre-emphasis-amplitude-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This signal controls the amount of current sourced to
>>> +      DP<#> and DM<#> after a J-to-K or K-to-J transition.
>>> +      The HS Transmitter pre-emphasis current is defined in terms of unit
>>> +      amounts. One unit amount is approximately 2 mA and is defined as
>>> +      1X pre-emphasis current.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,hs-rise-fall-time-bps:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the rise/fall times of the high-speed waveform.
>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> +      The hardware accepts only discrete values. The value closest to the
>>> +      provided input will be chosen as the override value for this param.
>>> +
>>> +  qcom,hs-crossover-voltage-mv:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>> +    description:
>>> +      This adjusts the voltage at which the DP<#> and DM<#>
>>> +      signals cross while transmitting in HS mode.
>>> +      The values defined are in milli volts. The hardware accepts only
>>> +      discrete values. The value closest to the provided input will be
>>> +      chosen as the override value for this param.
>>> +
>>> +  qcom,hs-output-impedance-mohm:
>>> +    $ref: /schemas/types.yaml#/definitions/int32
>> Here and in other places, please use standard units. See
>> dtschema/schemas/property-units.yaml in dtschema repo.
>>
>>
>> Best regards,
>> Krzysztof
> 
> Hi Krzystof, thanks for the input.
> 
> I see there are microvolt and microohm units present in 
> schemas/property-units.yaml
> 
> Would it be possible to add bps (basis point) to the list of standard 
> units if it makes sense to use it ?

There is already 'percent' so 'bp' could be as well, makes sense to me.
I can send a patch for it and we'll see what Rob says.


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-13 10:32       ` Krzysztof Kozlowski
@ 2022-05-13 12:20         ` Krzysztof Kozlowski
  2022-05-13 18:32           ` Krishna Kurapati PSSNV
  0 siblings, 1 reply; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-13 12:20 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram

On 13/05/2022 12:32, Krzysztof Kozlowski wrote:
>>
>> Would it be possible to add bps (basis point) to the list of standard 
>> units if it makes sense to use it ?
> 
> There is already 'percent' so 'bp' could be as well, makes sense to me.
> I can send a patch for it and we'll see what Rob says.


Merged:
https://github.com/devicetree-org/dt-schema/pull/73


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-13 12:20         ` Krzysztof Kozlowski
@ 2022-05-13 18:32           ` Krishna Kurapati PSSNV
  0 siblings, 0 replies; 16+ messages in thread
From: Krishna Kurapati PSSNV @ 2022-05-13 18:32 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala, Sandeep Maheswaram


On 5/13/2022 5:50 PM, Krzysztof Kozlowski wrote:
> On 13/05/2022 12:32, Krzysztof Kozlowski wrote:
>>> Would it be possible to add bps (basis point) to the list of standard
>>> units if it makes sense to use it ?
>> There is already 'percent' so 'bp' could be as well, makes sense to me.
>> I can send a patch for it and we'll see what Rob says.
>
> Merged:
> https://github.com/devicetree-org/dt-schema/pull/73
>
>
> Best regards,
> Krzysztof

Thanks Krzysztof, Will refresh the patches with new changes.

Regards,

Krishna,


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-12 10:30       ` Krzysztof Kozlowski
@ 2022-05-14  6:24         ` Krishna Kurapati PSSNV
  2022-05-14 19:41           ` Krzysztof Kozlowski
  0 siblings, 1 reply; 16+ messages in thread
From: Krishna Kurapati PSSNV @ 2022-05-14  6:24 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala


On 5/12/2022 4:00 PM, Krzysztof Kozlowski wrote:
> On 12/05/2022 07:57, Krishna Kurapati PSSNV wrote:
>> On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
>>> On 11/05/2022 17:26, Krishna Kurapati wrote:
>>>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>>
>>>> Add device tree bindings for SNPS phy tuning parameters.
>>>>
>>>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>>>> ---
>>>>    .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>>>    1 file changed, 87 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>> index 1ce251d..70efffe 100644
>>>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>> @@ -53,6 +53,93 @@ properties:
>>>>      vdda33-supply:
>>>>        description: phandle to the regulator 3.3V supply node.
>>>>    
>>>> +  qcom,hs-disconnect-bps:
>>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>>> +    description:
>>>> +      This adjusts the voltage level for the threshold used to
>>>> +      detect a disconnect event at the host. Possible values are.
>>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>> This means there is some minimum and maximum (100%)?
>> Hi Krzystof,
>>
>> Yes there are max and min for each parameter (not necessarily 0%/100%)
>>
>> As an example if we take squelch detector threshold, the register value
>> vs actual percentage changer as per data book is as follows :
>>
>> % change in voltage    |     corresponding reg value
>>
>>    -20.90%                        |    7
>>    -15.60%                        |    6
>> -10.30%                         |    5
>> -5.30%                           |    4
>> 0%                                  |    3
>> 5.30%                            |    2
>> 10.60%                          |    1
>> 15.90%                          |    0
>>
>> Here the min and max are 15.9% to -20.9%
>>
>> The min and max differ for each parameter and might not be necessarily
>> 0% and 100%
> Then it seems possible to define minimum and maximum values - please add
> them ("minimum: xxxx").
>
>
> Best regards,
> Krzysztof

Hi Krzysztof,

  Sorry for the late reply, missed this mail.

Currently, these values have a fixed maximum and minimum. But if these 
limits change in the

future (say on a per target basis) , would it be appropriate to add them 
here in bindings file ?

Also in the driver file for sc7280 target, we have added parameter 
mapping : (map b/w register value

and bps passed from device tree). For squelch detector, it is as follows:

+static struct override_param squelch_det_threshold_sc7280[] = {
+	OVERRIDE_PARAM(-2090, 7),
+	OVERRIDE_PARAM(-1560, 6),
+	OVERRIDE_PARAM(-1030, 5),
+	OVERRIDE_PARAM(-530, 4),
+	OVERRIDE_PARAM(0, 3),
+	OVERRIDE_PARAM(530, 2),
+	OVERRIDE_PARAM(1060, 1),
+	OVERRIDE_PARAM(1590, 0),
+};

And the code is written such that if we give a bps value in dt greater than max value in
table, we would automatically choose max value. And if we provide bps value lesser than
minimum value, we would choose the min value.

So, would it be appropriate to add the min and max in dt-bindings when there is a
slight chance of them changing in the future ?

Would like to know your thoughts on this,

Thanks,
Krishna,


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings
  2022-05-14  6:24         ` Krishna Kurapati PSSNV
@ 2022-05-14 19:41           ` Krzysztof Kozlowski
  0 siblings, 0 replies; 16+ messages in thread
From: Krzysztof Kozlowski @ 2022-05-14 19:41 UTC (permalink / raw)
  To: Krishna Kurapati PSSNV, Krzysztof Kozlowski, Rob Herring,
	Andy Gross, Bjorn Andersson, Greg Kroah-Hartman, Stephen Boyd,
	Doug Anderson, Matthias Kaehlcke, Wesley Cheng, Vinod Koul
  Cc: devicetree, linux-arm-msm, linux-usb, linux-kernel, linux-phy,
	quic_pkondeti, quic_ppratap, quic_vpulyala

On 14/05/2022 08:24, Krishna Kurapati PSSNV wrote:
> 
> On 5/12/2022 4:00 PM, Krzysztof Kozlowski wrote:
>> On 12/05/2022 07:57, Krishna Kurapati PSSNV wrote:
>>> On 5/11/2022 11:49 PM, Krzysztof Kozlowski wrote:
>>>> On 11/05/2022 17:26, Krishna Kurapati wrote:
>>>>> From: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>>>
>>>>> Add device tree bindings for SNPS phy tuning parameters.
>>>>>
>>>>> Signed-off-by: Sandeep Maheswaram <quic_c_sanm@quicinc.com>
>>>>> Signed-off-by: Krishna Kurapati <quic_kriskura@quicinc.com>
>>>>> ---
>>>>>    .../bindings/phy/qcom,usb-snps-femto-v2.yaml       | 87 ++++++++++++++++++++++
>>>>>    1 file changed, 87 insertions(+)
>>>>>
>>>>> diff --git a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>>> index 1ce251d..70efffe 100644
>>>>> --- a/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>>> +++ b/Documentation/devicetree/bindings/phy/qcom,usb-snps-femto-v2.yaml
>>>>> @@ -53,6 +53,93 @@ properties:
>>>>>      vdda33-supply:
>>>>>        description: phandle to the regulator 3.3V supply node.
>>>>>    
>>>>> +  qcom,hs-disconnect-bps:
>>>>> +    $ref: /schemas/types.yaml#/definitions/int32
>>>>> +    description:
>>>>> +      This adjusts the voltage level for the threshold used to
>>>>> +      detect a disconnect event at the host. Possible values are.
>>>>> +      The values defined are in multiples of basis points (1bp = 0.01%).
>>>> This means there is some minimum and maximum (100%)?
>>> Hi Krzystof,
>>>
>>> Yes there are max and min for each parameter (not necessarily 0%/100%)
>>>
>>> As an example if we take squelch detector threshold, the register value
>>> vs actual percentage changer as per data book is as follows :
>>>
>>> % change in voltage    |     corresponding reg value
>>>
>>>    -20.90%                        |    7
>>>    -15.60%                        |    6
>>> -10.30%                         |    5
>>> -5.30%                           |    4
>>> 0%                                  |    3
>>> 5.30%                            |    2
>>> 10.60%                          |    1
>>> 15.90%                          |    0
>>>
>>> Here the min and max are 15.9% to -20.9%
>>>
>>> The min and max differ for each parameter and might not be necessarily
>>> 0% and 100%
>> Then it seems possible to define minimum and maximum values - please add
>> them ("minimum: xxxx").
>>
>>
>> Best regards,
>> Krzysztof
> 
> Hi Krzysztof,
> 
>   Sorry for the late reply, missed this mail.
> 
> Currently, these values have a fixed maximum and minimum. But if these 
> limits change in the
> 
> future (say on a per target basis) , would it be appropriate to add them 
> here in bindings file ?

Per "target" you mean compatible? Then yes, the same as customizing
number of interrupts, clocks etc.

> 
> Also in the driver file for sc7280 target, we have added parameter 
> mapping : (map b/w register value
> 
> and bps passed from device tree). For squelch detector, it is as follows:
> 
> +static struct override_param squelch_det_threshold_sc7280[] = {
> +	OVERRIDE_PARAM(-2090, 7),
> +	OVERRIDE_PARAM(-1560, 6),
> +	OVERRIDE_PARAM(-1030, 5),
> +	OVERRIDE_PARAM(-530, 4),
> +	OVERRIDE_PARAM(0, 3),
> +	OVERRIDE_PARAM(530, 2),
> +	OVERRIDE_PARAM(1060, 1),
> +	OVERRIDE_PARAM(1590, 0),
> +};
> 
> And the code is written such that if we give a bps value in dt greater than max value in
> table, we would automatically choose max value. And if we provide bps value lesser than
> minimum value, we would choose the min value.
> 
> So, would it be appropriate to add the min and max in dt-bindings when there is a
> slight chance of them changing in the future ?

The kernel behavior should not matter here, because the bindings are
about the hardware. Therefore if hardware comes with maximum/minimum
values, it would be better to document them here.


Best regards,
Krzysztof

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2022-05-14 19:42 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-11 15:26 [v4 0/3] Add QCOM SNPS PHY overriding params support Krishna Kurapati
2022-05-11 15:26 ` [v4 1/3] dt-bindings: phy: qcom,usb-snps-femto-v2: Add phy override params bindings Krishna Kurapati
2022-05-11 18:19   ` Krzysztof Kozlowski
2022-05-12  5:57     ` Krishna Kurapati PSSNV
2022-05-12 10:30       ` Krzysztof Kozlowski
2022-05-14  6:24         ` Krishna Kurapati PSSNV
2022-05-14 19:41           ` Krzysztof Kozlowski
2022-05-13  7:33     ` Krishna Kurapati PSSNV
2022-05-13 10:32       ` Krzysztof Kozlowski
2022-05-13 12:20         ` Krzysztof Kozlowski
2022-05-13 18:32           ` Krishna Kurapati PSSNV
2022-05-11 15:26 ` [v4 2/3] phy: qcom-snps: Add support for overriding phy tuning parameters Krishna Kurapati
2022-05-11 21:04   ` kernel test robot
2022-05-12  1:29   ` kernel test robot
2022-05-11 15:26 ` [v4 3/3] arm64: dts: qcom: sc7280: Update SNPS Phy params for SC7280 IDP device Krishna Kurapati
2022-05-11 18:16 ` [v4 0/3] Add QCOM SNPS PHY overriding params support Krzysztof Kozlowski

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).