[PATCH 2/3] phy: qualcomm: phy-qcom-eusb2-repeater: Add squelch detect param update

Krishna Kurapati posted 3 patches 2 weeks, 2 days ago
There is a newer version of this series
[PATCH 2/3] phy: qualcomm: phy-qcom-eusb2-repeater: Add squelch detect param update
Posted by Krishna Kurapati 2 weeks, 2 days ago
Add support for overriding Squelch Detect parameter.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
---
 .../phy/qualcomm/phy-qcom-eusb2-repeater.c    | 21 +++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
index 651a12b59bc8..e5812626a871 100644
--- a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
+++ b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c
@@ -37,6 +37,17 @@
 #define EUSB2_TUNE_EUSB_EQU		0x5A
 #define EUSB2_TUNE_EUSB_HS_COMP_CUR	0x5B
 
+static const int squelch_detector[] = {
+	[0] = -6000,
+	[1] = -5000,
+	[2] = -4000,
+	[3] = -3000,
+	[4] = -2000,
+	[5] = -1000,
+	[6] = 0,
+	[7] = 1000,
+};
+
 struct eusb2_repeater_init_tbl_reg {
 	unsigned int reg;
 	unsigned int value;
@@ -120,7 +131,9 @@ static int eusb2_repeater_init(struct phy *phy)
 	struct regmap *regmap = rptr->regmap;
 	u32 base = rptr->base;
 	u32 poll_val;
+	s32 dt_val;
 	int ret;
+	int i;
 	u8 val;
 
 	ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs);
@@ -147,6 +160,14 @@ static int eusb2_repeater_init(struct phy *phy)
 	if (!of_property_read_u8(np, "qcom,tune-res-fsdif", &val))
 		regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, val);
 
+	if (!of_property_read_s32(np, "qcom,squelch-detector-bp", &dt_val)) {
+		for (i = 0; i < 8; i++) {
+			if (squelch_detector[i] == dt_val)
+				val = i;
+		}
+		regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, val);
+	}
+
 	/* Wait for status OK */
 	ret = regmap_read_poll_timeout(regmap, base + EUSB2_RPTR_STATUS, poll_val,
 				       poll_val & RPTR_OK, 10, 5);
-- 
2.34.1
Re: [PATCH 2/3] phy: qualcomm: phy-qcom-eusb2-repeater: Add squelch detect param update
Posted by Konrad Dybcio 2 weeks, 2 days ago
On 12/3/25 9:36 AM, Krishna Kurapati wrote:
> Add support for overriding Squelch Detect parameter.
> 
> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
> ---

[...]

>  struct eusb2_repeater_init_tbl_reg {
>  	unsigned int reg;
>  	unsigned int value;
> @@ -120,7 +131,9 @@ static int eusb2_repeater_init(struct phy *phy)
>  	struct regmap *regmap = rptr->regmap;
>  	u32 base = rptr->base;
>  	u32 poll_val;
> +	s32 dt_val;
>  	int ret;
> +	int i;
>  	u8 val;
>  
>  	ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs);
> @@ -147,6 +160,14 @@ static int eusb2_repeater_init(struct phy *phy)
>  	if (!of_property_read_u8(np, "qcom,tune-res-fsdif", &val))
>  		regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, val);
>  
> +	if (!of_property_read_s32(np, "qcom,squelch-detector-bp", &dt_val)) {
> +		for (i = 0; i < 8; i++) {
> +			if (squelch_detector[i] == dt_val)
> +				val = i;
> +		}
> +		regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, val);


How about:

if (!of_property..) {
	for (i = 0; i < ARRAY_SIZE(squelch_detector); i++) {
		if (squelch_detector[i] == dt_val) {
			regmap_write()
			break;
		}
	}
}

We could also validate the value (if none found but property present, error
out), but the dt checker already lists all the available values so that may
not be necessary

Konrad
Re: [PATCH 2/3] phy: qualcomm: phy-qcom-eusb2-repeater: Add squelch detect param update
Posted by Krishna Kurapati PSSNV 2 weeks, 2 days ago

On 12/3/2025 4:45 PM, Konrad Dybcio wrote:
> On 12/3/25 9:36 AM, Krishna Kurapati wrote:
>> Add support for overriding Squelch Detect parameter.
>>
>> Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
>> ---
> 
> [...]
> 
>>   struct eusb2_repeater_init_tbl_reg {
>>   	unsigned int reg;
>>   	unsigned int value;
>> @@ -120,7 +131,9 @@ static int eusb2_repeater_init(struct phy *phy)
>>   	struct regmap *regmap = rptr->regmap;
>>   	u32 base = rptr->base;
>>   	u32 poll_val;
>> +	s32 dt_val;
>>   	int ret;
>> +	int i;
>>   	u8 val;
>>   
>>   	ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs);
>> @@ -147,6 +160,14 @@ static int eusb2_repeater_init(struct phy *phy)
>>   	if (!of_property_read_u8(np, "qcom,tune-res-fsdif", &val))
>>   		regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, val);
>>   
>> +	if (!of_property_read_s32(np, "qcom,squelch-detector-bp", &dt_val)) {
>> +		for (i = 0; i < 8; i++) {
>> +			if (squelch_detector[i] == dt_val)
>> +				val = i;
>> +		}
>> +		regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, val);
> 
> 
> How about:
> 
> if (!of_property..) {
> 	for (i = 0; i < ARRAY_SIZE(squelch_detector); i++) {
> 		if (squelch_detector[i] == dt_val) {
> 			regmap_write()
> 			break;
> 		}
> 	}
> }
> 
> We could also validate the value (if none found but property present, error
> out), but the dt checker already lists all the available values so that may
> not be necessary
> 

Thanks for the review Konrad.

Will make changes accordingly.

Regards,
Krishna,