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
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
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,
© 2016 - 2025 Red Hat, Inc.