]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
phy: qualcomm: phy-qcom-eusb2-repeater: Add squelch detect param update
authorKrishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Fri, 19 Dec 2025 17:31:07 +0000 (23:01 +0530)
committerVinod Koul <vkoul@kernel.org>
Wed, 24 Dec 2025 07:03:05 +0000 (12:33 +0530)
Add support for overriding Squelch Detect parameter.

Signed-off-by: Krishna Kurapati <krishna.kurapati@oss.qualcomm.com>
Reviewed-by: Abel Vesa <abel.vesa@oss.qualcomm.com>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Link: https://patch.msgid.link/20251219173108.2119296-3-krishna.kurapati@oss.qualcomm.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c

index 441996480a67fa52e73f683cec3ba106d3048335..efeec4709a15de995841797af1afa6711eda387d 100644 (file)
 #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;
@@ -134,7 +145,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);
@@ -161,6 +174,15 @@ 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 < ARRAY_SIZE(squelch_detector); i++) {
+                       if (squelch_detector[i] == dt_val) {
+                               regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, i);
+                               break;
+                       }
+               }
+       }
+
        /* Wait for status OK */
        ret = regmap_read_poll_timeout(regmap, base + EUSB2_RPTR_STATUS, poll_val,
                                       poll_val & RPTR_OK, 10, 5);