From patchwork Wed Apr 16 12:02:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pengyu Luo X-Patchwork-Id: 881936 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3BDBD2475F7; Wed, 16 Apr 2025 12:04:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744805077; cv=none; b=BipREpcAkWqj5LCvayAKywYDKrSktZsjJCPZ8tr2jRi+bVp1tgjbSJXPeKJodDKJATZl5zkPcW1dIjHEKMw265FN0VdMdlIT1T9b9KTHaqfrCOyPhaPGiRaBeXP5y6IPpAF5B3QFwHaYBc4ArGJXEUUJTAb/f07CtCSp0jdnD9g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744805077; c=relaxed/simple; bh=c+DGbKzXmCKiFzw8vcHL7jqO7BNAP+exQmv/hCmlbRo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QU2L9+7uKXcHUVR4xj4lpQF0VeyoGx4UURvr4vWzeiax9NfNVDqqH/+x94w95Tuoo4V+XrZkDPKidw1HV+0D07wlQLRmvJD+A13tdd9hJoZR/EdmW+dI5Q8KZkCpWhVegRfpYNuShpiM/+3aCrm81DvmVew9XfMZnb/IugMi1K8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=UNFzkAlr; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UNFzkAlr" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-224341bbc1dso62093545ad.3; Wed, 16 Apr 2025 05:04:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744805075; x=1745409875; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BM7x+ZBG1DXAyQZ90aa0DW8MY6nV37JS9LRikgJBlYM=; b=UNFzkAlrbFiSivPpYNesTR2h8O/J1rDRI/dD39YmkYBCzR6de7PQq8Q1qFPRgTResf jCySp0ANE/LT2WQSRA6E4XbEyxAObwwZtFdn7C7S9A+ToPHaDIix7Qu6yWscp6skpUMJ RtqZoyzFxKdiM30Tx39TkG81iQz1ls3tY7dPUyR1pVpCftuz0DPmcpV2HjF0ti6BcjQ4 Jg/0FNtskzGZxcXAODDMkXoIKrm+VNl4UuNbENUKQYZdRbgKQ+p5ptNmd6T6NO2jipJ8 exiqswRWQpF6nYFKW1HrP8I9uXJS7WCUt5AySzcrAEUS4AGoOve65FVTQ49tdI0KPB6a 8ttA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744805075; x=1745409875; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BM7x+ZBG1DXAyQZ90aa0DW8MY6nV37JS9LRikgJBlYM=; b=J36vi+jIIzS8QE1sdzE+rxJbzEq8V3SJBLrwWR1ystPrkkw2m5OMlXB2qe7YtBPfUD 3m8jrs0nvSHG5AvuiRGr5oyeG97A9krZp/iSYXae0ylwV+SNH2ZyzToXsPfnlL08UNsq LDIFhrcf9JU6k/yBoK7D7xJ2mincIqV98/V7D7rSp9VstRb+ErZsKqX3RG64YemCEKs3 tcLqKhm6iNO89i5Fdzeg2zSFMTkS64XfIgts5a1g4WnjrfYczzuS2ahcz2y0zSqrjNFQ ielFw8dotFllq1AE+sCXHM72in4ZEDNIp1hnOcTQJIOmIOnTAS8QN58+QJtMhpzVOGcr Wy8A== X-Forwarded-Encrypted: i=1; AJvYcCUuxg9ePVxDwYRd+bitdzgNehvORnhnMxgJFr5dn2qi1XB4yHZmhvFH6e89QK4DVMelYXbovYv4mBUqyCbM@vger.kernel.org, AJvYcCXA68DTVIzvnlxckPj8VAAoQtLEnjbbIxKtzzTuiWJvtsorse4UZUaHkZ3MigOEwpWMK8GYE2P1zLYU@vger.kernel.org X-Gm-Message-State: AOJu0YzOLcGr0dSbrNeplEKXCJ6JLpivmAj9atG3RjDxVC10ruciN+ZM WS6vHIXEaseyNquHrZ6vLbtAOMXFbaeiiycxYDTvHyP2G8tplcqu X-Gm-Gg: ASbGncurHdoE7XjIR6la3RxitSVHr52dUpKtViAoYfV5APmyg+e2TWFNGuEJVxr6hNS jJFb2jVu9lTXfRsyFmdBkwjWZcW3kJpJDm+OQEvCjrJTBIda5C9q2znGVtj9HYAYg97uuhiEh6c JX0quG7BfRDmpbQ/8LsKFzWaWxwRNNEcUuHsKJhRJnqpO9zPd5i/f5nM4mIuWhVW09NRLcoJEYl FQwkjofIozHcc0ynTEvr9/hmczp/W7rUqK4MZqATOKHC0RoRVH8OxwGVNAQxWkNKR2Rh5VTF4mq F46HKBWeWq8vtT51Wg5dvPOkScsJexk+kEJiVf0= X-Google-Smtp-Source: AGHT+IGjmNkai2OqNwA8/dUWOCbwak6evON16LRF36TpbLv/gFaJvSGvFqbQl/bmCAtp4AcK/zNx+A== X-Received: by 2002:a17:903:1a44:b0:223:325c:89f6 with SMTP id d9443c01a7336-22c358c2862mr29539835ad.10.1744805075390; Wed, 16 Apr 2025 05:04:35 -0700 (PDT) Received: from nuvole.. ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33febfb3sm12033385ad.259.2025.04.16.05.04.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 05:04:34 -0700 (PDT) From: Pengyu Luo To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Pengyu Luo , Stephen Rothwell , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/2] dt-bindings: phy: qcom,snps-eusb2-repeater: Add more tuning overrides Date: Wed, 16 Apr 2025 20:02:00 +0800 Message-ID: <20250416120201.244133-2-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416120201.244133-1-mitltlatltl@gmail.com> References: <20250416120201.244133-1-mitltlatltl@gmail.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In downstream tree, many registers need to be overridden, it varies from devices and platforms, not only HS trasmit amplitude(0x51), HS disconnect threshold(0x53), Tx pre-emphasis tuning(0x57). And some devices require different overrides for different dr_mode. So add property entries for host mode, original entries will be used for device mode. Signed-off-by: Pengyu Luo --- .../phy/qcom,snps-eusb2-repeater.yaml | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-repeater.yaml b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-repeater.yaml index d16a543a7..d0f5e770d 100644 --- a/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-repeater.yaml +++ b/Documentation/devicetree/bindings/phy/qcom,snps-eusb2-repeater.yaml @@ -36,25 +36,60 @@ properties: qcom,tune-usb2-disc-thres: $ref: /schemas/types.yaml#/definitions/uint8 - description: High-Speed disconnect threshold + description: High-Speed disconnect threshold for device mode minimum: 0 maximum: 7 default: 0 qcom,tune-usb2-amplitude: $ref: /schemas/types.yaml#/definitions/uint8 - description: High-Speed transmit amplitude + description: High-Speed transmit amplitude for device mode minimum: 0 maximum: 15 default: 8 qcom,tune-usb2-preem: $ref: /schemas/types.yaml#/definitions/uint8 - description: High-Speed TX pre-emphasis tuning + description: High-Speed TX pre-emphasis tuning for device mode minimum: 0 maximum: 7 default: 5 + qcom,tune-usb2-squelch: + $ref: /schemas/types.yaml#/definitions/uint8 + description: Squelch detection threshold tuning for device mode + minimum: 0 + maximum: 7 + default: 3 + + qcom,tune-usb2-disc-thres-host: + $ref: /schemas/types.yaml#/definitions/uint8 + description: High-Speed disconnect threshold for host mode + minimum: 0 + maximum: 7 + default: 0 + + qcom,tune-usb2-amplitude-host: + $ref: /schemas/types.yaml#/definitions/uint8 + description: High-Speed transmit amplitude for host mode + minimum: 0 + maximum: 15 + default: 8 + + qcom,tune-usb2-preem-host: + $ref: /schemas/types.yaml#/definitions/uint8 + description: High-Speed TX pre-emphasis tuning for host mode + minimum: 0 + maximum: 7 + default: 5 + + qcom,tune-usb2-squelch-host: + $ref: /schemas/types.yaml#/definitions/uint8 + description: Squelch detection threshold tuning for host mode + minimum: 0 + maximum: 7 + default: 3 + required: - compatible - reg From patchwork Wed Apr 16 12:02:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pengyu Luo X-Patchwork-Id: 881668 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7E07724BC07; Wed, 16 Apr 2025 12:04:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744805086; cv=none; b=Gk/quiBddYo7ewPA/zr/98WN0Q7j3L8TU5vlxMftYf2SgudZhq1k2/K5R1UizfU7teeg5mmy8T0Y255a3YhDGptAlukGhFUMHe3uKonQrw5TLAv5AXTOw35zb9uICDb4HMlcC1rymSHeAccs2zLv8wB/HZMor5xz5kBWClYDYyk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744805086; c=relaxed/simple; bh=0eqbW/ADX0/3OFgPSkh+pNLMavSwHy31i9yMWuD4ffI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TvVk36+fdxZ9AxmRnuXLsC066dZyecFShXclIrSUHSJFc3zhMbWVXcs5E67L5kWGwsuvu+sfrwB9V2M0mpLDZYXPc1aqGeUfkBDFtDMeBZQLbozsAlNSaxM5tvmXAuQG0P+SztSmmSjU/jAiON/Y8unkSdYwqZ2SPmzJvFZxF6s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=eZbWGhzD; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="eZbWGhzD" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-227cf12df27so5411635ad.0; Wed, 16 Apr 2025 05:04:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1744805084; x=1745409884; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Ie7hREUa4SMJAa/pZTbegFZ7KD0h8GRA9ZCVQg1tUQo=; b=eZbWGhzDJhSPdJpzPPslkfmlwPP7KaRcuE/uH38hn4P4XDNRrztdjko/SRd/ySGHt0 YuHPrGEF3EXkQTHUyBWvGecoBqXKzmYwlCmmqVwtkFid5jeMommqYIOmwdTg+hREVRF3 Q9Zo7djlAxxAAGK1NBo8vS5PBz3Tm59hEitcxnFWQyd46bU7GaM3aRLuJtixuq7LDa00 ASRc+NgYcO2nINdZqOh7xCXzENeDnp/XD+0aCxuakxF+Iajz+KgPZGRMyepuLx34F8KF KcXc0hdY3l8q1AlwB/R8qTDWoMBsCsTez/QOp9naTbW9DoaySTr78+ko3kz/wzvlX3RJ R+mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744805084; x=1745409884; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ie7hREUa4SMJAa/pZTbegFZ7KD0h8GRA9ZCVQg1tUQo=; b=Ya2XW/D35Yidhj79U/AUjgDa8USZDZR71C7YJHTFlgwAsR95xbm2F7ivFIrSBTN5me /E5PUbmTg1dOlCxrZP02LzetTxOH6wAMW2ADupZfgWV0/J1cJ/R6hsUVpRkNvWuBmzyK MaH7SZ3M39/YFjSo4T/ijd4wk8WtFrOaf8zR9xG16Knsk9W24oEEst3upnfWf+vBKgRF 6xnbxhLshArZRdq50OhPF7cf4rCEgeNjjPfI7GSPgDZ96HQaJDrf/xBOdsIY/iFQCH+r CWbvtqEWr84FkUoDFi/RTDPhpBB1/FZevzxM6paAtMgKgibshm/SQ7EnngV+ykR2CNEl napw== X-Forwarded-Encrypted: i=1; AJvYcCUpyBl7X8pAX0ImUim0aEXIPP34vq5yGgl5kl5Rkx3uidcDX1t0nPh/rnDuGr5/GcPS2CIHdaYMxe2I@vger.kernel.org, AJvYcCWE1pUD/ekGwg28z6phdjbk7dhVT0ind6u4LxeToCPZyWtZ1b/IXRHbslf3L49zd98SpMOGAY9Z28xyoQFz@vger.kernel.org X-Gm-Message-State: AOJu0YznXpuKbcLaPnOI2wD7xv/thUa7SRUh+0PKAVgYZok7Vs3bsupY d3bbIDMyRTNLZdtSFcMyIQu/047cQpUxCr/fmnbMiOW6iJ1fLVHh X-Gm-Gg: ASbGncvVoblRBylfdcLsPpEiT9MoCeCIUzDw3ac1oIOLJPNNqqB1GeRCR7K8HPu3lVx /i16zMGMAFlntAvpqNPNgjVxYN1EJO8J9gTLUGGcJIIaV5I0EBl29+nK4dxG3NQPrpTMNFkA1Bd jN0533f79Fn98Ztt5R3NJbonc2WyY11HVOxJ4qyl6+D3qteGLWwUJW+Ew1uMH7XOV+lK4dMSK07 IUijLSWkI/bIZma3OrNR3e8WfweBuvXvMuwdq8NmcfJ53fyTzVkuJ5+rTDtLwsduH+3kR7fldTk dJupP7S5hbfCYZcG15Y+BTkIbd14gCz9z+pqu/2NahBysYIq4A== X-Google-Smtp-Source: AGHT+IF3c77cgFMGhot+IttF6abeW9f9RiIxUS3EHqsIYXeT4jB4a6Vdk4WPQdSgQAWsR+Iaultg5w== X-Received: by 2002:a17:903:188:b0:220:cfb7:56eb with SMTP id d9443c01a7336-22c35f1cd23mr19478865ad.26.1744805083546; Wed, 16 Apr 2025 05:04:43 -0700 (PDT) Received: from nuvole.. ([144.202.86.13]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33febfb3sm12033385ad.259.2025.04.16.05.04.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 05:04:43 -0700 (PDT) From: Pengyu Luo To: Vinod Koul , Kishon Vijay Abraham I , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Pengyu Luo , Stephen Rothwell , Abel Vesa Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 2/2] phy: qualcomm: phy-qcom-eusb2-repeater: rework reg override handler Date: Wed, 16 Apr 2025 20:02:01 +0800 Message-ID: <20250416120201.244133-3-mitltlatltl@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250416120201.244133-1-mitltlatltl@gmail.com> References: <20250416120201.244133-1-mitltlatltl@gmail.com> Precedence: bulk X-Mailing-List: linux-arm-msm@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 In downstream tree, many registers need to be overridden, it varies from devices and platforms, with these registers getting more, adding a handler for this is helpful. Signed-off-by: Pengyu Luo --- .../phy/qualcomm/phy-qcom-eusb2-repeater.c | 105 +++++++++++++++--- 1 file changed, 92 insertions(+), 13 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c index 6bd1b3c75..a4b75e70e 100644 --- a/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c +++ b/drivers/phy/qualcomm/phy-qcom-eusb2-repeater.c @@ -68,12 +68,27 @@ struct eusb2_repeater_cfg { int num_vregs; }; +struct tune { + const char * const tune_name; + const char * const host_tune_name; + enum eusb2_reg_layout init_tbl_idx; + u8 tune_reg; + u8 tune; + u8 host_tune; +}; + +struct tune_cfg { + struct tune *tune_tbl; + int tune_tbl_size; +}; + struct eusb2_repeater { struct device *dev; struct regmap *regmap; struct phy *phy; struct regulator_bulk_data *vregs; const struct eusb2_repeater_cfg *cfg; + struct tune_cfg *tune_cfg; u32 base; enum phy_mode mode; }; @@ -108,6 +123,79 @@ static const struct eusb2_repeater_cfg smb2360_eusb2_cfg = { .num_vregs = ARRAY_SIZE(pm8550b_vreg_l), }; +static struct tune tune_tbl[] = { + { + .tune_name = "qcom,tune-usb2-amplitude", + .host_tune_name = "qcom,tune-usb2-amplitude-host", + .init_tbl_idx = TUNE_IUSB2, + .tune_reg = EUSB2_TUNE_IUSB2, + }, + { + .tune_name = "qcom,tune-usb2-disc-thres", + .host_tune_name = "qcom,tune-usb2-disc-thres-host", + .init_tbl_idx = TUNE_HSDISC, + .tune_reg = EUSB2_TUNE_HSDISC, + + }, + { + .tune_name = "qcom,tune-usb2-squelch", + .host_tune_name = "qcom,tune-usb2-squelch-host", + .init_tbl_idx = TUNE_SQUELCH_U, + .tune_reg = EUSB2_TUNE_SQUELCH_U, + }, + { + .tune_name = "qcom,tune-usb2-preem", + .host_tune_name = "qcom,tune-usb2-preem-host", + .init_tbl_idx = TUNE_USB2_PREEM, + .tune_reg = EUSB2_TUNE_USB2_PREEM, + }, +}; + +static struct tune_cfg tune_cfg = { + .tune_tbl = tune_tbl, + .tune_tbl_size = ARRAY_SIZE(tune_tbl), +}; + +static void eusb2_repeater_write_overrides(struct eusb2_repeater *rptr, + bool is_host_mode) +{ + struct tune *tune_tbl; + int size, i; + + tune_tbl = rptr->tune_cfg->tune_tbl; + size = rptr->tune_cfg->tune_tbl_size; + + for (i = 0; i < size; ++i) + regmap_write(rptr->regmap, rptr->base + tune_tbl[i].tune_reg, + is_host_mode ? tune_tbl[i].host_tune : tune_tbl[i].tune); +} + +static void eusb2_repeater_parse_dt(struct eusb2_repeater *rptr) +{ + struct device_node *np = rptr->dev->of_node; + const u32 *init_tbl = rptr->cfg->init_tbl; + struct tune *tune_tbl; + int size, i, idx; + + tune_tbl = tune_cfg.tune_tbl; + size = tune_cfg.tune_tbl_size; + + for (i = 0; i < size; ++i) { + /* set default values from init_tbl */ + idx = tune_tbl[i].init_tbl_idx; + tune_tbl[i].tune = init_tbl[idx]; + tune_tbl[i].host_tune = init_tbl[idx]; + + /* update values from dt */ + of_property_read_u8(np, tune_tbl[i].tune_name, + &tune_tbl[i].tune); + of_property_read_u8(np, tune_tbl[i].host_tune_name, + &tune_tbl[i].host_tune); + } + + rptr->tune_cfg = &tune_cfg; +} + static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr) { int num = rptr->cfg->num_vregs; @@ -127,20 +215,12 @@ static int eusb2_repeater_init_vregs(struct eusb2_repeater *rptr) static int eusb2_repeater_init(struct phy *phy) { struct eusb2_repeater *rptr = phy_get_drvdata(phy); - struct device_node *np = rptr->dev->of_node; struct regmap *regmap = rptr->regmap; const u32 *init_tbl = rptr->cfg->init_tbl; - u8 tune_usb2_preem = init_tbl[TUNE_USB2_PREEM]; - u8 tune_hsdisc = init_tbl[TUNE_HSDISC]; - u8 tune_iusb2 = init_tbl[TUNE_IUSB2]; u32 base = rptr->base; u32 val; int ret; - of_property_read_u8(np, "qcom,tune-usb2-amplitude", &tune_iusb2); - of_property_read_u8(np, "qcom,tune-usb2-disc-thres", &tune_hsdisc); - of_property_read_u8(np, "qcom,tune-usb2-preem", &tune_usb2_preem); - ret = regulator_bulk_enable(rptr->cfg->num_vregs, rptr->vregs); if (ret) return ret; @@ -153,14 +233,9 @@ static int eusb2_repeater_init(struct phy *phy) regmap_write(regmap, base + EUSB2_TUNE_USB2_HS_COMP_CUR, init_tbl[TUNE_USB2_HS_COMP_CUR]); regmap_write(regmap, base + EUSB2_TUNE_USB2_EQU, init_tbl[TUNE_USB2_EQU]); regmap_write(regmap, base + EUSB2_TUNE_USB2_SLEW, init_tbl[TUNE_USB2_SLEW]); - regmap_write(regmap, base + EUSB2_TUNE_SQUELCH_U, init_tbl[TUNE_SQUELCH_U]); regmap_write(regmap, base + EUSB2_TUNE_RES_FSDIF, init_tbl[TUNE_RES_FSDIF]); regmap_write(regmap, base + EUSB2_TUNE_USB2_CROSSOVER, init_tbl[TUNE_USB2_CROSSOVER]); - regmap_write(regmap, base + EUSB2_TUNE_USB2_PREEM, tune_usb2_preem); - regmap_write(regmap, base + EUSB2_TUNE_HSDISC, tune_hsdisc); - regmap_write(regmap, base + EUSB2_TUNE_IUSB2, tune_iusb2); - ret = regmap_read_poll_timeout(regmap, base + EUSB2_RPTR_STATUS, val, val & RPTR_OK, 10, 5); if (ret) dev_err(rptr->dev, "initialization timed-out\n"); @@ -177,6 +252,7 @@ static int eusb2_repeater_set_mode(struct phy *phy, switch (mode) { case PHY_MODE_USB_HOST: + eusb2_repeater_write_overrides(rptr, true); /* * CM.Lx is prohibited when repeater is already into Lx state as * per eUSB 1.2 Spec. Below implement software workaround until @@ -186,6 +262,7 @@ static int eusb2_repeater_set_mode(struct phy *phy, regmap_write(regmap, base + EUSB2_FORCE_VAL_5, V_CLK_19P2M_EN); break; case PHY_MODE_USB_DEVICE: + eusb2_repeater_write_overrides(rptr, false); /* * In device mode clear host mode related workaround as there * is no repeater reset available, and enable/disable of @@ -252,6 +329,8 @@ static int eusb2_repeater_probe(struct platform_device *pdev) return ret; } + eusb2_repeater_parse_dt(rptr); + rptr->phy = devm_phy_create(dev, np, &eusb2_repeater_ops); if (IS_ERR(rptr->phy)) { dev_err(dev, "failed to create PHY: %d\n", ret);