From nobody Mon Sep 8 16:20:28 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E7CE3C77B78 for ; Tue, 18 Apr 2023 17:33:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229900AbjDRRdv (ORCPT ); Tue, 18 Apr 2023 13:33:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44798 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232664AbjDRRdo (ORCPT ); Tue, 18 Apr 2023 13:33:44 -0400 Received: from mx0a-0014ca01.pphosted.com (mx0b-0014ca01.pphosted.com [208.86.201.193]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 46D1EA244 for ; Tue, 18 Apr 2023 10:33:10 -0700 (PDT) Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33IFlO5U026604; Tue, 18 Apr 2023 10:32:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=proofpoint; bh=c5mhZIzicKyVDhAx68DK5J/opc+HxCUNWpvWLHJyc18=; b=m+0dzIbJiLXs51wjN7qDA1L7+tIHcWd0XyFTFwgm1w6a9IwQ9CtBgdm7npp+TlGck8qN 5TNG7u1izN/Pj2sAvB5NiRQdt14VTV2doZvu2wfIJbs5DP9Ge3RFnZfnRRktVe5G4nFo FYI2mBnD3ck/oF79nukkgN8ZExByWRfU/qp/H4wzoRlZ76G1DxsDF6bAAKIoKTIHVHoN kawDNxAbAwTulQtXxnvNrX1d+C8/SFGVnzQYg1a4Gb0pzgyUPyqNqfTfHrkQhm1uDyvS hFm1AeF1iB2z8Pt4z/Q1/Md3WCAQ/uxney2O2wLMDqVxNGvVphrcLGY8+M/FqcLHG63N Vw== Received: from nam12-mw2-obe.outbound.protection.outlook.com (mail-mw2nam12lp2041.outbound.protection.outlook.com [104.47.66.41]) by mx0b-0014ca01.pphosted.com (PPS) with ESMTPS id 3q1x590e8u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Apr 2023 10:32:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EOQtXXr2o5+YDpZ/PME1lqS5nkUWoEuLMa3S2bM7JCw+x14nq8KVaAeG0gog6htdBJLRWOO3QWVUmHgGHhbyq5k/aIO4oj5nTku6rhWGWycelWH/fH1nSmCUAT20OHJuTJApVPb0KboEL9c0f4mjOig001xJxB9oB4Ohf8o57pbb7kz7H0TM9epDg9XUvm0WvgKcU8g3II5rE9MBU7x6NDBzhguqjxw+l4x2FtlMLf+rmTrLE5JInoEXAD905vOZ+YDM4RcJ4A4xZ3X/Tv/twkb0pRBF08pm7xIBPKu4Diu1Oy9PW8AIKq6PwQH0uCRbryq+wwhQMv4lMYskhQMOhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=c5mhZIzicKyVDhAx68DK5J/opc+HxCUNWpvWLHJyc18=; b=fqkOpP8zucM0K94Ud8N91qQSCGahINy3qLM1a7W40Yvw8UOEJdLqS9zD3QSy/3RElHPIOB+oVXXUEA2AXWqcIQUGtQRPQ9MhqxJzsysG3Qdmv0vIlYwc7BBHGQgQCgjGO5L36kjzg3C3pkrM7zVkqTN3KhNAUCk+d4zjiXoYnzptT2kQrJX8COwgdV2FFYzVc1Uzw/wsY3tVotAIM1JUdSpR4p7myIuVavyU6/1xRkXLEdUi6JAEtLscaQx/3DNrFejz9aWnINJIQGi0q9TSzvi7365TZYDRZsiO44HjmC+qLg2u133qFl7Ih61jD9TOANWICGVZudONZhxpsszW8Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 64.207.220.244) smtp.rcpttodomain=ti.com smtp.mailfrom=cadence.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=cadence.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c5mhZIzicKyVDhAx68DK5J/opc+HxCUNWpvWLHJyc18=; b=blTX/6MABIVX8iJhLaphaa60VUXfvTJaSky5tcOmUigQWs16ro/ZXhiJ9bQbromVb1JUh+7cYDl5mK+plbUY7q3TscJyWkF0JYmO/Lstu56KGGFzuBB+NHZUbNRVnE+FN7KDgpeTaEOQXItArReVYfvAG6fkNgCSsCLWxW3+gAA= Received: from DM6PR12CA0003.namprd12.prod.outlook.com (2603:10b6:5:1c0::16) by BLAPR07MB7554.namprd07.prod.outlook.com (2603:10b6:208:287::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 17:32:17 +0000 Received: from DM6NAM12FT056.eop-nam12.prod.protection.outlook.com (2603:10b6:5:1c0:cafe::3f) by DM6PR12CA0003.outlook.office365.com (2603:10b6:5:1c0::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 17:32:17 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 64.207.220.244) smtp.mailfrom=cadence.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=cadence.com; Received-SPF: Pass (protection.outlook.com: domain of cadence.com designates 64.207.220.244 as permitted sender) receiver=protection.outlook.com; client-ip=64.207.220.244; helo=wcmailrelayl01.cadence.com; pr=C Received: from wcmailrelayl01.cadence.com (64.207.220.244) by DM6NAM12FT056.mail.protection.outlook.com (10.13.179.204) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.6 via Frontend Transport; Tue, 18 Apr 2023 17:32:16 +0000 Received: from maileu4.global.cadence.com (eudvw-maileu4.cadence.com [10.160.110.201]) by wcmailrelayl01.cadence.com (8.14.7/8.14.4) with ESMTP id 33IHWDVv194680 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 18 Apr 2023 10:32:14 -0700 Received: from maileu5.global.cadence.com (10.160.110.202) by maileu4.global.cadence.com (10.160.110.201) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Tue, 18 Apr 2023 19:32:00 +0200 Received: from vleu-orange.cadence.com (10.160.88.83) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24 via Frontend Transport; Tue, 18 Apr 2023 19:32:00 +0200 Received: from vleu-orange.cadence.com (localhost.localdomain [127.0.0.1]) by vleu-orange.cadence.com (8.14.4/8.14.4) with ESMTP id 33IHW0CK025664; Tue, 18 Apr 2023 19:32:00 +0200 Received: (from sjakhade@localhost) by vleu-orange.cadence.com (8.14.4/8.14.4/Submit) id 33IHVxjk025663; Tue, 18 Apr 2023 19:31:59 +0200 From: Swapnil Jakhade To: , , , CC: , , , Subject: [PATCH v3 1/4] phy: cadence-torrent: Add function to get PLL to be configured for DP Date: Tue, 18 Apr 2023 19:31:54 +0200 Message-ID: <20230418173157.25607-2-sjakhade@cadence.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20230418173157.25607-1-sjakhade@cadence.com> References: <20230418173157.25607-1-sjakhade@cadence.com> MIME-Version: 1.0 X-CrossPremisesHeadersFilteredBySendConnector: maileu4.global.cadence.com X-OrganizationHeadersPreserved: maileu4.global.cadence.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM12FT056:EE_|BLAPR07MB7554:EE_ X-MS-Office365-Filtering-Correlation-Id: e74bd1f5-e4c6-4c9e-62b2-08db4032da93 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TWbH109UASxfLPpRZmvrfuQZ8o7PPpX0xix/UTjOG0nADvhZkyRkMiXDH0zFwHTRgmrhnt6JpCeYSbOPRxjfimSKtekbk4+hgHAZq9Yq+B2sZnOacfw1wnABY9KL4mInKsTE0Pa6fj8lspN6XYWKaSb2GCcaWVHNbAl9Qaf6GJxAKzLFAxXTt81QEScnnWrBTOLMVqkTviv36mPC1fzLdWxGG2NW6T6ebGU5nZQLrFmH/6pg+royaRnulkPfwZdSRE0UYvwhL5iGa4CkO5kc4/uDNKYBy7yozH22qZIBJIOADKbJ3oR/1mt7h7AQn4Uzz5YG/NQKMWWoAyxN4H+56Hma1OCOgQspDGtAoMcfJ1W0p6h67kSGbUmV5ttTNVzXdVcpQ1GhuATg4fbVXfRgHqVWFSTGPKdDHh7Ix+BHd6WOUsOG4F0Us9/gAUb8cmhr7Kd2nZg+3cl5e8HV2EJMHFnXi+BF19X8igwRxGd8oZ0EqQOykTgyFRSlu74zjoR+LeGzYGJr5eq3Twc8/1ukm8oN7RQwUa0FIfZ/NYYV7RL9J0LfaYvHEM5X55XQs6AbP0moIuqPVkSQMfLMRmXFTbQQsS7IqdDZs40s6N6rsjlINPeY0YsBVV2rvuG1B3GbdF1zgn+Rj9CBehiWZ6tn678wQGV0oJUbyU7ZI3+ToORiwM5l45qWTUsYYA5vYM5fownJiPlizatrmCkHPTAgJ7Apecp03IJ1LUMud1ObcVS0Lt7R4Gz7iaVKQoPLjXWi X-Forefront-Antispam-Report: CIP:64.207.220.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:wcmailrelayl01.cadence.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230028)(4636009)(39860400002)(136003)(346002)(396003)(376002)(36092001)(451199021)(46966006)(36840700001)(40470700004)(8936002)(36756003)(8676002)(40460700003)(2906002)(82310400005)(86362001)(5660300002)(40480700001)(478600001)(6666004)(54906003)(110136005)(42186006)(70206006)(186003)(2616005)(36860700001)(1076003)(70586007)(26005)(41300700001)(316002)(356005)(82740400003)(83380400001)(81166007)(47076005)(4326008)(426003)(336012)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 17:32:16.1754 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e74bd1f5-e4c6-4c9e-62b2-08db4032da93 X-MS-Exchange-CrossTenant-Id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d36035c5-6ce6-4662-a3dc-e762e61ae4c9;Ip=[64.207.220.244];Helo=[wcmailrelayl01.cadence.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM12FT056.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLAPR07MB7554 X-Proofpoint-ORIG-GUID: vWJhGzVE6fYwj7c-baOj_mabABcEHe8r X-Proofpoint-GUID: vWJhGzVE6fYwj7c-baOj_mabABcEHe8r X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-18_13,2023-04-18_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 impostorscore=0 suspectscore=0 mlxlogscore=920 lowpriorityscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 priorityscore=1501 mlxscore=0 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304180144 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Torrent PHY PLL0 or PLL1 is used for DP depending on the single link or multilink protocol configuration for which PHY is configured. In multilink configurations with other protocols, either PLL0 or PLL1 will be used for DP. For single link DP, both PLLs need to be configured at POR. Signed-off-by: Swapnil Jakhade --- drivers/phy/cadence/phy-cadence-torrent.c | 33 +++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadenc= e/phy-cadence-torrent.c index 3831f596d50c..bf22948c4a4f 100644 --- a/drivers/phy/cadence/phy-cadence-torrent.c +++ b/drivers/phy/cadence/phy-cadence-torrent.c @@ -38,6 +38,9 @@ #define POLL_TIMEOUT_US 5000 #define PLL_LOCK_TIMEOUT 100000 =20 +#define DP_PLL0 BIT(0) +#define DP_PLL1 BIT(1) + #define TORRENT_COMMON_CDB_OFFSET 0x0 =20 #define TORRENT_TX_LANE_CDB_OFFSET(ln, block_offset, reg_offset) \ @@ -323,6 +326,7 @@ struct cdns_torrent_phy { void __iomem *base; /* DPTX registers base */ void __iomem *sd_base; /* SD0801 registers base */ u32 max_bit_rate; /* Maximum link bit rate to use (in Mbps) */ + u32 dp_pll; struct reset_control *phy_rst; struct reset_control *apb_rst; struct device *dev; @@ -977,6 +981,30 @@ void cdns_torrent_dp_pma_cmn_vco_cfg_100mhz(struct cdn= s_torrent_phy *cdns_phy, } } =20 +/* Set PLL used for DP configuration */ +static int cdns_torrent_dp_get_pll(struct cdns_torrent_phy *cdns_phy, + enum cdns_torrent_phy_type phy_t2) +{ + switch (phy_t2) { + case TYPE_PCIE: + case TYPE_USB: + cdns_phy->dp_pll =3D DP_PLL1; + break; + case TYPE_SGMII: + case TYPE_QSGMII: + cdns_phy->dp_pll =3D DP_PLL0; + break; + case TYPE_NONE: + cdns_phy->dp_pll =3D DP_PLL0 | DP_PLL1; + break; + default: + dev_err(cdns_phy->dev, "Unsupported PHY configuration\n"); + return -EINVAL; + } + + return 0; +} + /* * Enable or disable PLL for selected lanes. */ @@ -1627,6 +1655,7 @@ static int cdns_torrent_dp_init(struct phy *phy) { struct cdns_torrent_inst *inst =3D phy_get_drvdata(phy); struct cdns_torrent_phy *cdns_phy =3D dev_get_drvdata(phy->dev.parent); + int ret; =20 switch (cdns_phy->ref_clk_rate) { case CLK_19_2_MHZ: @@ -1639,6 +1668,10 @@ static int cdns_torrent_dp_init(struct phy *phy) return -EINVAL; } =20 + ret =3D cdns_torrent_dp_get_pll(cdns_phy, TYPE_NONE); + if (ret) + return ret; + cdns_torrent_dp_common_init(cdns_phy, inst); =20 return cdns_torrent_dp_start(cdns_phy, inst, phy); --=20 2.34.1 From nobody Mon Sep 8 16:20:28 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A427AC77B75 for ; Tue, 18 Apr 2023 17:33:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232631AbjDRRds (ORCPT ); Tue, 18 Apr 2023 13:33:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44758 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232381AbjDRRdm (ORCPT ); Tue, 18 Apr 2023 13:33:42 -0400 Received: from mx0a-0014ca01.pphosted.com (mx0b-0014ca01.pphosted.com [208.86.201.193]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3B0BA7680 for ; Tue, 18 Apr 2023 10:33:06 -0700 (PDT) Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33IFlILV026562; Tue, 18 Apr 2023 10:32:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=proofpoint; bh=1w+YxsHOF5HdNiDgVb2rnec436eVyv+a5mER3p7Qugs=; b=iRlOlOceLiJ1bZibXeJn41HoTbrRnXA1sE5jEEHNCS2xdn3evf2c3AYIDtPUlUc3XY8Q kNBGNh1hmKvQk+68A7gPtnlyb4dP3jLvW6fUbB/TgzjZ02ubB/NtcbUtaLLkHsI5pDEf Wm3RbJnRKEMBi8/aLQICDSzMHoAK6fJ7CW5kNonxoej+ZlJdtAqkOBINEUzLvuPVYnSH a8bTrZqWUPETlZUndu5oVgGP7smpwTSzcjm1+7oYAwv4xgeX6/0giJ6K7jR0FRV4NJCc ZBjxJQPihtaLYRvHmVcgwdCGq1XF6WUMo9Y4onvPPpOgogEubpSC8w6zcvp96Ho6ydSA qg== Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2172.outbound.protection.outlook.com [104.47.55.172]) by mx0b-0014ca01.pphosted.com (PPS) with ESMTPS id 3q1x590e7k-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Apr 2023 10:32:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G9vJH5ZNQvYZ7WuOdm1ZT15vY0bK29KIGsx5LeughiJr+e1Gd1a0fxJvu+ASbhOGeKYTSAoxyUJX9SzRpT99xkFwhqy1ILN/Fy8NiEI6HiB6/gpXulHPn3K19AkSBrXJR5tg7Tpxq94lWU+LJ0goIJVwjdIPckc2E3znT5Z8mlwtem39FnXe3KD9k2yCa+o2p7wyAX/j26iXK8axB55FqCIZNyBNZ0UU46YnaX++hjS03Xa7F2nrQ+o/74xpQreOfYpgsXZXPM9P26OwYCZl8RlSU3rVp0NBzB2disFQMr2uA+3BIrRfu3xZMQgnbsIs9twvGlsQagNuMcsgQbqcLw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=1w+YxsHOF5HdNiDgVb2rnec436eVyv+a5mER3p7Qugs=; b=e4INWckjCMBV87uwIO+fMRTXnH6TB8rKDw6ECLKVdwZJKEXUm257SAjYjtpmkXqFfgia3sHi/h0glekEoX7PxwGyyRl+GXU/kTQQ714TRZ8auatWvU3vEylqc34WWg/msItV6+dXbg08L5LAcSo5Y6gfss+VpH4hoyHrgSp5FbGeyyT2/rF7UPEr6+hMXbbnezYfq6NEZv0HaPddRpmFnaRoiZxHlcmXgkwyDR5HdB0Ezsg54vAQVUOHd16beUozGVd85lQ8/ZL3AOnCjYYWhoLs5flUnvj439dLtluNR32bzm0polNpbBZaE1a+9a7a8kb59XQRb9zDiebcQ4eqOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 64.207.220.244) smtp.rcpttodomain=ti.com smtp.mailfrom=cadence.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=cadence.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1w+YxsHOF5HdNiDgVb2rnec436eVyv+a5mER3p7Qugs=; b=F8HpAjEuXNPtxxevENlwmKIz8OOimo75RT9dK1ug7sO2qxrQ6RoNaw7TFKFlEhBWoI+m5shTKrZIsDk4l/ih1pfIMKhx24EdfcynzIdB4qRwDdYGwzEBQyoTisaolmSRK0pJoQfIyZZE1GWNK7dpoioDijZ19+7rxCJTbXiJ8o8= Received: from DS7PR03CA0345.namprd03.prod.outlook.com (2603:10b6:8:55::29) by BYAPR07MB7829.namprd07.prod.outlook.com (2603:10b6:a03:104::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 17:32:04 +0000 Received: from DM6NAM12FT089.eop-nam12.prod.protection.outlook.com (2603:10b6:8:55:cafe::93) by DS7PR03CA0345.outlook.office365.com (2603:10b6:8:55::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.47 via Frontend Transport; Tue, 18 Apr 2023 17:32:04 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 64.207.220.244) smtp.mailfrom=cadence.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=cadence.com; Received-SPF: Pass (protection.outlook.com: domain of cadence.com designates 64.207.220.244 as permitted sender) receiver=protection.outlook.com; client-ip=64.207.220.244; helo=wcmailrelayl01.cadence.com; pr=C Received: from wcmailrelayl01.cadence.com (64.207.220.244) by DM6NAM12FT089.mail.protection.outlook.com (10.13.179.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.7 via Frontend Transport; Tue, 18 Apr 2023 17:32:03 +0000 Received: from maileu5.global.cadence.com (eudvw-maileu5.cadence.com [10.160.110.202]) by wcmailrelayl01.cadence.com (8.14.7/8.14.4) with ESMTP id 33IHW1LC194661 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 18 Apr 2023 10:32:03 -0700 Received: from maileu5.global.cadence.com (10.160.110.202) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 18 Apr 2023 19:32:00 +0200 Received: from vleu-orange.cadence.com (10.160.88.83) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24 via Frontend Transport; Tue, 18 Apr 2023 19:32:00 +0200 Received: from vleu-orange.cadence.com (localhost.localdomain [127.0.0.1]) by vleu-orange.cadence.com (8.14.4/8.14.4) with ESMTP id 33IHW050025673; Tue, 18 Apr 2023 19:32:00 +0200 Received: (from sjakhade@localhost) by vleu-orange.cadence.com (8.14.4/8.14.4/Submit) id 33IHW0lK025667; Tue, 18 Apr 2023 19:32:00 +0200 From: Swapnil Jakhade To: , , , CC: , , , Subject: [PATCH v3 2/4] phy: cadence-torrent: Prepare driver for multilink DP support Date: Tue, 18 Apr 2023 19:31:55 +0200 Message-ID: <20230418173157.25607-3-sjakhade@cadence.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20230418173157.25607-1-sjakhade@cadence.com> References: <20230418173157.25607-1-sjakhade@cadence.com> MIME-Version: 1.0 X-CrossPremisesHeadersFilteredBySendConnector: maileu5.global.cadence.com X-OrganizationHeadersPreserved: maileu5.global.cadence.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM12FT089:EE_|BYAPR07MB7829:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e2a44ca-8892-469b-7544-08db4032d342 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: A2ZY4QSfQML1EQG/gIcWkuwjRFAXycC9hrbihLY/gvwBJg9NQzHYK+P9T+0shsVKL8KG2/l8M/PWDvaM2pvM61tXfpMboIJ+4+MBr3zz6dAX4dycB8kS56Hda0I3B6DxTDJ6OTSizXlHY9qsknHExPjhQWEPAk4UiWC5VehTkY4YRVt1/8+ghMtw3xmVyU84ZSdnIOPDtoCMLP87Nk4xNgzt3A8LkSg5iE/gLomOeX8HxD82g6SC1N1E5+vRN1oPrbIFc+TvPk/MSI5Mot4pDMLoahbk8ezpVHPFFxEMwzoMxfVQwLLFauMU8Aa8FY0BjazrVPip2kUOPOOBpfTNBawuGZjNy0mB1j+Znx5GCFPpsFeLQUMVuSx3VeBZguTJY2OSbYq3asDcvUFSvowWNkrPAzm+0HGeWOm3ntSUtIZcGeF4I7pN/Mde9Unc5mOp6Ak+04xjJ+sAeuHcfOeLG7MorXK1hwCm3pljRRqhmHiAnIuUzyZEGMG4sATOADaDGWaCEz8epbC3YkcI6cOqnh8OU68oj9U+mZdjt6bODBo00YtMLtgnFN8zQmItVUiKT1TCgQE5/cj01SLdqLLHwnYPGPa/c/NMv1KEd+o4sNfe6BVDcKfAGWJL8YiC9oGnE8Ql8t6VpnHCit2LPv+uhKj1eFTkSBlNQ65WSvqi798+0fRcvscSDFPC5bzPTlM6QV1s9UNQ1NnjC3H8971NqzFJshun8NrGMYHnUgV5AFQ= X-Forefront-Antispam-Report: CIP:64.207.220.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:wcmailrelayl01.cadence.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230028)(4636009)(396003)(376002)(346002)(136003)(39860400002)(36092001)(451199021)(40470700004)(46966006)(36840700001)(356005)(81166007)(2906002)(30864003)(82740400003)(40480700001)(40460700003)(66899021)(478600001)(6666004)(2616005)(83380400001)(47076005)(36860700001)(26005)(1076003)(426003)(336012)(36756003)(86362001)(186003)(41300700001)(316002)(8936002)(5660300002)(8676002)(82310400005)(110136005)(54906003)(42186006)(4326008)(70206006)(70586007)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 17:32:03.9010 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e2a44ca-8892-469b-7544-08db4032d342 X-MS-Exchange-CrossTenant-Id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d36035c5-6ce6-4662-a3dc-e762e61ae4c9;Ip=[64.207.220.244];Helo=[wcmailrelayl01.cadence.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM12FT089.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB7829 X-Proofpoint-ORIG-GUID: KdjVWV0Mb6Gc9NxssFc9h29QS1-zPKZG X-Proofpoint-GUID: KdjVWV0Mb6Gc9NxssFc9h29QS1-zPKZG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-18_13,2023-04-18_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 impostorscore=0 suspectscore=0 mlxlogscore=999 lowpriorityscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 priorityscore=1501 mlxscore=0 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304180144 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This patch prepares driver for multilink DP support as well as for multiprotocol PHY configurations involving DP as one of the required protocols. This needs changes in functions configuring default single link DP with master lane 0 to support non-zero master lane values and associated PLL configurations. Signed-off-by: Swapnil Jakhade --- drivers/phy/cadence/phy-cadence-torrent.c | 305 ++++++++++++---------- 1 file changed, 168 insertions(+), 137 deletions(-) diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadenc= e/phy-cadence-torrent.c index bf22948c4a4f..cef63d4a93b7 100644 --- a/drivers/phy/cadence/phy-cadence-torrent.c +++ b/drivers/phy/cadence/phy-cadence-torrent.c @@ -69,16 +69,11 @@ */ #define PHY_AUX_CTRL 0x04 #define PHY_RESET 0x20 -#define PMA_TX_ELEC_IDLE_MASK 0xF0U #define PMA_TX_ELEC_IDLE_SHIFT 4 -#define PHY_L00_RESET_N_MASK 0x01U #define PHY_PMA_XCVR_PLLCLK_EN 0x24 #define PHY_PMA_XCVR_PLLCLK_EN_ACK 0x28 #define PHY_PMA_XCVR_POWER_STATE_REQ 0x2c -#define PHY_POWER_STATE_LN_0 0x0000 -#define PHY_POWER_STATE_LN_1 0x0008 -#define PHY_POWER_STATE_LN_2 0x0010 -#define PHY_POWER_STATE_LN_3 0x0018 +#define PHY_POWER_STATE_LN(ln) ((ln) * 8) #define PMA_XCVR_POWER_STATE_REQ_LN_MASK 0x3FU #define PHY_PMA_XCVR_POWER_STATE_ACK 0x30 #define PHY_PMA_CMN_READY 0x34 @@ -1009,12 +1004,13 @@ static int cdns_torrent_dp_get_pll(struct cdns_torr= ent_phy *cdns_phy, * Enable or disable PLL for selected lanes. */ static int cdns_torrent_dp_set_pll_en(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, struct phy_configure_opts_dp *dp, bool enable) { - u32 rd_val; - u32 ret; struct regmap *regmap =3D cdns_phy->regmap_dptx_phy_reg; + u32 rd_val, pll_ack_val; + int ret; =20 /* * Used to determine, which bits to check for or enable in @@ -1024,28 +1020,18 @@ static int cdns_torrent_dp_set_pll_en(struct cdns_t= orrent_phy *cdns_phy, /* Used to enable or disable lanes. */ u32 pll_val; =20 - /* Select values of registers and mask, depending on enabled lane - * count. - */ - switch (dp->lanes) { - /* lane 0 */ - case (1): - pll_bits =3D 0x00000001; - break; - /* lanes 0-1 */ - case (2): - pll_bits =3D 0x00000003; - break; - /* lanes 0-3, all */ - default: - pll_bits =3D 0x0000000F; - break; - } + /* Select values of registers and mask, depending on enabled lane count. = */ + pll_val =3D cdns_torrent_dp_read(regmap, PHY_PMA_XCVR_PLLCLK_EN); =20 - if (enable) - pll_val =3D pll_bits; - else - pll_val =3D 0x00000000; + if (enable) { + pll_bits =3D ((1 << dp->lanes) - 1); + pll_val |=3D pll_bits; + pll_ack_val =3D pll_bits; + } else { + pll_bits =3D ((1 << inst->num_lanes) - 1); + pll_val &=3D (~pll_bits); + pll_ack_val =3D 0; + } =20 cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_PLLCLK_EN, pll_val); =20 @@ -1053,22 +1039,23 @@ static int cdns_torrent_dp_set_pll_en(struct cdns_t= orrent_phy *cdns_phy, ret =3D regmap_read_poll_timeout(regmap, PHY_PMA_XCVR_PLLCLK_EN_ACK, rd_val, - (rd_val & pll_bits) =3D=3D pll_val, + (rd_val & pll_bits) =3D=3D pll_ack_val, 0, POLL_TIMEOUT_US); ndelay(100); return ret; } =20 static int cdns_torrent_dp_set_power_state(struct cdns_torrent_phy *cdns_p= hy, + struct cdns_torrent_inst *inst, u32 num_lanes, enum phy_powerstate powerstate) { /* Register value for power state for a single byte. */ - u32 value_part; - u32 value; - u32 mask; + u32 value_part, i; + u32 value =3D 0; + u32 mask =3D 0; u32 read_val; - u32 ret; + int ret; struct regmap *regmap =3D cdns_phy->regmap_dptx_phy_reg; =20 switch (powerstate) { @@ -1084,29 +1071,11 @@ static int cdns_torrent_dp_set_power_state(struct c= dns_torrent_phy *cdns_phy, break; } =20 - /* Select values of registers and mask, depending on enabled - * lane count. - */ - switch (num_lanes) { - /* lane 0 */ - case (1): - value =3D value_part; - mask =3D 0x0000003FU; - break; - /* lanes 0-1 */ - case (2): - value =3D (value_part - | (value_part << 8)); - mask =3D 0x00003F3FU; - break; - /* lanes 0-3, all */ - default: - value =3D (value_part - | (value_part << 8) - | (value_part << 16) - | (value_part << 24)); - mask =3D 0x3F3F3F3FU; - break; + /* Select values of registers and mask, depending on enabled lane count. = */ + + for (i =3D 0; i < num_lanes; i++) { + value |=3D (value_part << PHY_POWER_STATE_LN(i)); + mask |=3D (PMA_XCVR_POWER_STATE_REQ_LN_MASK << PHY_POWER_STATE_LN(i)); } =20 /* Set power state A. */ @@ -1121,7 +1090,8 @@ static int cdns_torrent_dp_set_power_state(struct cdn= s_torrent_phy *cdns_phy, return ret; } =20 -static int cdns_torrent_dp_run(struct cdns_torrent_phy *cdns_phy, u32 num_= lanes) +static int cdns_torrent_dp_run(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, u32 num_lanes) { unsigned int read_val; int ret; @@ -1142,12 +1112,12 @@ static int cdns_torrent_dp_run(struct cdns_torrent_= phy *cdns_phy, u32 num_lanes) =20 ndelay(100); =20 - ret =3D cdns_torrent_dp_set_power_state(cdns_phy, num_lanes, + ret =3D cdns_torrent_dp_set_power_state(cdns_phy, inst, num_lanes, POWERSTATE_A2); if (ret) return ret; =20 - ret =3D cdns_torrent_dp_set_power_state(cdns_phy, num_lanes, + ret =3D cdns_torrent_dp_set_power_state(cdns_phy, inst, num_lanes, POWERSTATE_A0); =20 return ret; @@ -1171,6 +1141,7 @@ static int cdns_torrent_dp_wait_pma_cmn_ready(struct = cdns_torrent_phy *cdns_phy) } =20 static void cdns_torrent_dp_pma_cmn_rate(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, u32 rate, u32 num_lanes) { unsigned int clk_sel_val =3D 0; @@ -1203,14 +1174,17 @@ static void cdns_torrent_dp_pma_cmn_rate(struct cdn= s_torrent_phy *cdns_phy, break; } =20 - cdns_torrent_phy_write(cdns_phy->regmap_common_cdb, - CMN_PDIAG_PLL0_CLK_SEL_M0, clk_sel_val); - cdns_torrent_phy_write(cdns_phy->regmap_common_cdb, - CMN_PDIAG_PLL1_CLK_SEL_M0, clk_sel_val); + if (cdns_phy->dp_pll & DP_PLL0) + cdns_torrent_phy_write(cdns_phy->regmap_common_cdb, + CMN_PDIAG_PLL0_CLK_SEL_M0, clk_sel_val); + + if (cdns_phy->dp_pll & DP_PLL1) + cdns_torrent_phy_write(cdns_phy->regmap_common_cdb, + CMN_PDIAG_PLL1_CLK_SEL_M0, clk_sel_val); =20 /* PMA lane configuration to deal with multi-link operation */ for (i =3D 0; i < num_lanes; i++) - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[i], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + i], XCVR_DIAG_HSCLK_DIV, hsclk_div_val); } =20 @@ -1219,23 +1193,44 @@ static void cdns_torrent_dp_pma_cmn_rate(struct cdn= s_torrent_phy *cdns_phy, * set and PLL disable request was processed. */ static int cdns_torrent_dp_configure_rate(struct cdns_torrent_phy *cdns_ph= y, + struct cdns_torrent_inst *inst, struct phy_configure_opts_dp *dp) { - u32 read_val, ret; + u32 read_val, field_val; + int ret; =20 - /* Disable the cmn_pll0_en before re-programming the new data rate. */ - regmap_field_write(cdns_phy->phy_pma_pll_raw_ctrl, 0x0); + /* + * Disable the associated PLL (cmn_pll0_en or cmn_pll1_en) before + * re-programming the new data rate. + */ + ret =3D regmap_field_read(cdns_phy->phy_pma_pll_raw_ctrl, &field_val); + if (ret) + return ret; + field_val &=3D ~(cdns_phy->dp_pll); + regmap_field_write(cdns_phy->phy_pma_pll_raw_ctrl, field_val); =20 /* * Wait for PLL ready de-assertion. * For PLL0 - PHY_PMA_CMN_CTRL2[2] =3D=3D 1 + * For PLL1 - PHY_PMA_CMN_CTRL2[3] =3D=3D 1 */ - ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, - read_val, - ((read_val >> 2) & 0x01) !=3D 0, - 0, POLL_TIMEOUT_US); - if (ret) - return ret; + if (cdns_phy->dp_pll & DP_PLL0) { + ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, + read_val, + ((read_val >> 2) & 0x01) !=3D 0, + 0, POLL_TIMEOUT_US); + if (ret) + return ret; + } + + if ((cdns_phy->dp_pll & DP_PLL1) && cdns_phy->nsubnodes !=3D 1) { + ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, + read_val, + ((read_val >> 3) & 0x01) !=3D 0, + 0, POLL_TIMEOUT_US); + if (ret) + return ret; + } ndelay(200); =20 /* DP Rate Change - VCO Output settings. */ @@ -1249,19 +1244,35 @@ static int cdns_torrent_dp_configure_rate(struct cd= ns_torrent_phy *cdns_phy, /* PMA common configuration 100MHz */ cdns_torrent_dp_pma_cmn_vco_cfg_100mhz(cdns_phy, dp->link_rate, dp->ssc); =20 - cdns_torrent_dp_pma_cmn_rate(cdns_phy, dp->link_rate, dp->lanes); + cdns_torrent_dp_pma_cmn_rate(cdns_phy, inst, dp->link_rate, dp->lanes); =20 - /* Enable the cmn_pll0_en. */ - regmap_field_write(cdns_phy->phy_pma_pll_raw_ctrl, 0x3); + /* Enable the associated PLL (cmn_pll0_en or cmn_pll1_en) */ + ret =3D regmap_field_read(cdns_phy->phy_pma_pll_raw_ctrl, &field_val); + if (ret) + return ret; + field_val |=3D cdns_phy->dp_pll; + regmap_field_write(cdns_phy->phy_pma_pll_raw_ctrl, field_val); =20 /* * Wait for PLL ready assertion. * For PLL0 - PHY_PMA_CMN_CTRL2[0] =3D=3D 1 + * For PLL1 - PHY_PMA_CMN_CTRL2[1] =3D=3D 1 */ - ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, - read_val, - (read_val & 0x01) !=3D 0, - 0, POLL_TIMEOUT_US); + if (cdns_phy->dp_pll & DP_PLL0) { + ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, + read_val, + (read_val & 0x01) !=3D 0, + 0, POLL_TIMEOUT_US); + if (ret) + return ret; + } + + if ((cdns_phy->dp_pll & DP_PLL1) && cdns_phy->nsubnodes !=3D 1) + ret =3D regmap_field_read_poll_timeout(cdns_phy->phy_pma_cmn_ctrl_2, + read_val, + ((read_val >> 1) & 0x01) !=3D 0, + 0, POLL_TIMEOUT_US); + return ret; } =20 @@ -1329,6 +1340,7 @@ static int cdns_torrent_dp_verify_config(struct cdns_= torrent_inst *inst, =20 /* Set power state A0 and PLL clock enable to 0 on enabled lanes. */ static void cdns_torrent_dp_set_a0_pll(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, u32 num_lanes) { struct regmap *regmap =3D cdns_phy->regmap_dptx_phy_reg; @@ -1336,27 +1348,13 @@ static void cdns_torrent_dp_set_a0_pll(struct cdns_= torrent_phy *cdns_phy, PHY_PMA_XCVR_POWER_STATE_REQ); u32 pll_clk_en =3D cdns_torrent_dp_read(regmap, PHY_PMA_XCVR_PLLCLK_EN); + u32 i; =20 - /* Lane 0 is always enabled. */ - pwr_state &=3D ~(PMA_XCVR_POWER_STATE_REQ_LN_MASK << - PHY_POWER_STATE_LN_0); - pll_clk_en &=3D ~0x01U; + for (i =3D 0; i < num_lanes; i++) { + pwr_state &=3D ~(PMA_XCVR_POWER_STATE_REQ_LN_MASK + << PHY_POWER_STATE_LN(inst->mlane + i)); =20 - if (num_lanes > 1) { - /* lane 1 */ - pwr_state &=3D ~(PMA_XCVR_POWER_STATE_REQ_LN_MASK << - PHY_POWER_STATE_LN_1); - pll_clk_en &=3D ~(0x01U << 1); - } - - if (num_lanes > 2) { - /* lanes 2 and 3 */ - pwr_state &=3D ~(PMA_XCVR_POWER_STATE_REQ_LN_MASK << - PHY_POWER_STATE_LN_2); - pwr_state &=3D ~(PMA_XCVR_POWER_STATE_REQ_LN_MASK << - PHY_POWER_STATE_LN_3); - pll_clk_en &=3D ~(0x01U << 2); - pll_clk_en &=3D ~(0x01U << 3); + pll_clk_en &=3D ~(0x01U << (inst->mlane + i)); } =20 cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_POWER_STATE_REQ, pwr_state); @@ -1365,36 +1363,57 @@ static void cdns_torrent_dp_set_a0_pll(struct cdns_= torrent_phy *cdns_phy, =20 /* Configure lane count as required. */ static int cdns_torrent_dp_set_lanes(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, struct phy_configure_opts_dp *dp) { - u32 value; - u32 ret; + u32 value, i; + int ret; struct regmap *regmap =3D cdns_phy->regmap_dptx_phy_reg; u8 lane_mask =3D (1 << dp->lanes) - 1; + u8 pma_tx_elec_idle_mask =3D 0; + u32 clane =3D inst->mlane; + + lane_mask <<=3D clane; =20 value =3D cdns_torrent_dp_read(regmap, PHY_RESET); /* clear pma_tx_elec_idle_ln_* bits. */ - value &=3D ~PMA_TX_ELEC_IDLE_MASK; + pma_tx_elec_idle_mask =3D ((1 << inst->num_lanes) - 1) << clane; + + pma_tx_elec_idle_mask <<=3D PMA_TX_ELEC_IDLE_SHIFT; + + value &=3D ~pma_tx_elec_idle_mask; + /* Assert pma_tx_elec_idle_ln_* for disabled lanes. */ value |=3D ((~lane_mask) << PMA_TX_ELEC_IDLE_SHIFT) & - PMA_TX_ELEC_IDLE_MASK; + pma_tx_elec_idle_mask; + cdns_torrent_dp_write(regmap, PHY_RESET, value); =20 - /* reset the link by asserting phy_l00_reset_n low */ + /* reset the link by asserting master lane phy_l0*_reset_n low */ cdns_torrent_dp_write(regmap, PHY_RESET, - value & (~PHY_L00_RESET_N_MASK)); + value & (~(1 << clane))); =20 /* - * Assert lane reset on unused lanes and lane 0 so they remain in reset + * Assert lane reset on unused lanes and master lane so they remain in re= set * and powered down when re-enabling the link */ - value =3D (value & 0x0000FFF0) | (0x0000000E & lane_mask); + for (i =3D 0; i < inst->num_lanes; i++) + value &=3D (~(1 << (clane + i))); + + for (i =3D 1; i < inst->num_lanes; i++) + value |=3D ((1 << (clane + i)) & lane_mask); + cdns_torrent_dp_write(regmap, PHY_RESET, value); =20 - cdns_torrent_dp_set_a0_pll(cdns_phy, dp->lanes); + cdns_torrent_dp_set_a0_pll(cdns_phy, inst, dp->lanes); =20 /* release phy_l0*_reset_n based on used laneCount */ - value =3D (value & 0x0000FFF0) | (0x0000000F & lane_mask); + for (i =3D 0; i < inst->num_lanes; i++) + value &=3D (~(1 << (clane + i))); + + for (i =3D 0; i < inst->num_lanes; i++) + value |=3D ((1 << (clane + i)) & lane_mask); + cdns_torrent_dp_write(regmap, PHY_RESET, value); =20 /* Wait, until PHY gets ready after releasing PHY reset signal. */ @@ -1405,41 +1424,44 @@ static int cdns_torrent_dp_set_lanes(struct cdns_to= rrent_phy *cdns_phy, ndelay(100); =20 /* release pma_xcvr_pllclk_en_ln_*, only for the master lane */ - cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_PLLCLK_EN, 0x0001); + value =3D cdns_torrent_dp_read(regmap, PHY_PMA_XCVR_PLLCLK_EN); + value |=3D (1 << clane); + cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_PLLCLK_EN, value); =20 - ret =3D cdns_torrent_dp_run(cdns_phy, dp->lanes); + ret =3D cdns_torrent_dp_run(cdns_phy, inst, dp->lanes); =20 return ret; } =20 /* Configure link rate as required. */ static int cdns_torrent_dp_set_rate(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, struct phy_configure_opts_dp *dp) { - u32 ret; + int ret; =20 - ret =3D cdns_torrent_dp_set_power_state(cdns_phy, dp->lanes, + ret =3D cdns_torrent_dp_set_power_state(cdns_phy, inst, dp->lanes, POWERSTATE_A3); if (ret) return ret; - ret =3D cdns_torrent_dp_set_pll_en(cdns_phy, dp, false); + ret =3D cdns_torrent_dp_set_pll_en(cdns_phy, inst, dp, false); if (ret) return ret; ndelay(200); =20 - ret =3D cdns_torrent_dp_configure_rate(cdns_phy, dp); + ret =3D cdns_torrent_dp_configure_rate(cdns_phy, inst, dp); if (ret) return ret; ndelay(200); =20 - ret =3D cdns_torrent_dp_set_pll_en(cdns_phy, dp, true); + ret =3D cdns_torrent_dp_set_pll_en(cdns_phy, inst, dp, true); if (ret) return ret; - ret =3D cdns_torrent_dp_set_power_state(cdns_phy, dp->lanes, + ret =3D cdns_torrent_dp_set_power_state(cdns_phy, inst, dp->lanes, POWERSTATE_A2); if (ret) return ret; - ret =3D cdns_torrent_dp_set_power_state(cdns_phy, dp->lanes, + ret =3D cdns_torrent_dp_set_power_state(cdns_phy, inst, dp->lanes, POWERSTATE_A0); if (ret) return ret; @@ -1450,44 +1472,45 @@ static int cdns_torrent_dp_set_rate(struct cdns_tor= rent_phy *cdns_phy, =20 /* Configure voltage swing and pre-emphasis for all enabled lanes. */ static void cdns_torrent_dp_set_voltages(struct cdns_torrent_phy *cdns_phy, + struct cdns_torrent_inst *inst, struct phy_configure_opts_dp *dp) { u8 lane; u16 val; =20 for (lane =3D 0; lane < dp->lanes; lane++) { - val =3D cdns_torrent_phy_read(cdns_phy->regmap_tx_lane_cdb[lane], + val =3D cdns_torrent_phy_read(cdns_phy->regmap_tx_lane_cdb[inst->mlane += lane], TX_DIAG_ACYA); /* * Write 1 to register bit TX_DIAG_ACYA[0] to freeze the * current state of the analog TX driver. */ val |=3D TX_DIAG_ACYA_HBDC_MASK; - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], TX_DIAG_ACYA, val); =20 - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], TX_TXCC_CTRL, 0x08A4); val =3D vltg_coeff[dp->voltage[lane]][dp->pre[lane]].diag_tx_drv; - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], DRV_DIAG_TX_DRV, val); val =3D vltg_coeff[dp->voltage[lane]][dp->pre[lane]].mgnfs_mult; - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], TX_TXCC_MGNFS_MULT_000, val); val =3D vltg_coeff[dp->voltage[lane]][dp->pre[lane]].cpost_mult; - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], TX_TXCC_CPOST_MULT_00, val); =20 - val =3D cdns_torrent_phy_read(cdns_phy->regmap_tx_lane_cdb[lane], + val =3D cdns_torrent_phy_read(cdns_phy->regmap_tx_lane_cdb[inst->mlane += lane], TX_DIAG_ACYA); /* * Write 0 to register bit TX_DIAG_ACYA[0] to allow the state of * analog TX driver to reflect the new programmed one. */ val &=3D ~TX_DIAG_ACYA_HBDC_MASK; - cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[lane], + cdns_torrent_phy_write(cdns_phy->regmap_tx_lane_cdb[inst->mlane + lane], TX_DIAG_ACYA, val); } }; @@ -1506,7 +1529,7 @@ static int cdns_torrent_dp_configure(struct phy *phy, } =20 if (opts->dp.set_lanes) { - ret =3D cdns_torrent_dp_set_lanes(cdns_phy, &opts->dp); + ret =3D cdns_torrent_dp_set_lanes(cdns_phy, inst, &opts->dp); if (ret) { dev_err(&phy->dev, "cdns_torrent_dp_set_lanes failed\n"); return ret; @@ -1514,7 +1537,7 @@ static int cdns_torrent_dp_configure(struct phy *phy, } =20 if (opts->dp.set_rate) { - ret =3D cdns_torrent_dp_set_rate(cdns_phy, &opts->dp); + ret =3D cdns_torrent_dp_set_rate(cdns_phy, inst, &opts->dp); if (ret) { dev_err(&phy->dev, "cdns_torrent_dp_set_rate failed\n"); return ret; @@ -1522,7 +1545,7 @@ static int cdns_torrent_dp_configure(struct phy *phy, } =20 if (opts->dp.set_voltages) - cdns_torrent_dp_set_voltages(cdns_phy, &opts->dp); + cdns_torrent_dp_set_voltages(cdns_phy, inst, &opts->dp); =20 return ret; } @@ -1590,6 +1613,7 @@ static void cdns_torrent_dp_common_init(struct cdns_t= orrent_phy *cdns_phy, { struct regmap *regmap =3D cdns_phy->regmap_dptx_phy_reg; unsigned char lane_bits; + u32 val; =20 cdns_torrent_dp_write(regmap, PHY_AUX_CTRL, 0x0003); /* enable AUX */ =20 @@ -1597,18 +1621,23 @@ static void cdns_torrent_dp_common_init(struct cdns= _torrent_phy *cdns_phy, * Set lines power state to A0 * Set lines pll clk enable to 0 */ - cdns_torrent_dp_set_a0_pll(cdns_phy, inst->num_lanes); + cdns_torrent_dp_set_a0_pll(cdns_phy, inst, inst->num_lanes); =20 /* * release phy_l0*_reset_n and pma_tx_elec_idle_ln_* based on * used lanes */ lane_bits =3D (1 << inst->num_lanes) - 1; - cdns_torrent_dp_write(regmap, PHY_RESET, - ((0xF & ~lane_bits) << 4) | (0xF & lane_bits)); + + val =3D cdns_torrent_dp_read(regmap, PHY_RESET); + val |=3D (0xF & lane_bits); + val &=3D ~(lane_bits << 4); + cdns_torrent_dp_write(regmap, PHY_RESET, val); =20 /* release pma_xcvr_pllclk_en_ln_*, only for the master lane */ - cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_PLLCLK_EN, 0x0001); + val =3D cdns_torrent_dp_read(regmap, PHY_PMA_XCVR_PLLCLK_EN); + val |=3D 1; + cdns_torrent_dp_write(regmap, PHY_PMA_XCVR_PLLCLK_EN, val); =20 /* * PHY PMA registers configuration functions @@ -1627,7 +1656,7 @@ static void cdns_torrent_dp_common_init(struct cdns_t= orrent_phy *cdns_phy, cdns_phy->max_bit_rate, false); =20 - cdns_torrent_dp_pma_cmn_rate(cdns_phy, cdns_phy->max_bit_rate, + cdns_torrent_dp_pma_cmn_rate(cdns_phy, inst, cdns_phy->max_bit_rate, inst->num_lanes); =20 /* take out of reset */ @@ -1640,13 +1669,15 @@ static int cdns_torrent_dp_start(struct cdns_torren= t_phy *cdns_phy, { int ret; =20 - cdns_torrent_phy_on(phy); + ret =3D cdns_torrent_phy_on(phy); + if (ret) + return ret; =20 ret =3D cdns_torrent_dp_wait_pma_cmn_ready(cdns_phy); if (ret) return ret; =20 - ret =3D cdns_torrent_dp_run(cdns_phy, inst->num_lanes); + ret =3D cdns_torrent_dp_run(cdns_phy, inst, inst->num_lanes); =20 return ret; } --=20 2.34.1 From nobody Mon Sep 8 16:20:28 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 50FB5C6FD18 for ; Tue, 18 Apr 2023 17:33:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232357AbjDRRdS (ORCPT ); Tue, 18 Apr 2023 13:33:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231379AbjDRRdP (ORCPT ); Tue, 18 Apr 2023 13:33:15 -0400 Received: from mx0a-0014ca01.pphosted.com (mx0a-0014ca01.pphosted.com [208.84.65.235]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CDEEC1387A for ; Tue, 18 Apr 2023 10:32:49 -0700 (PDT) Received: from pps.filterd (m0042385.ppops.net [127.0.0.1]) by mx0a-0014ca01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33IEgFPS028302; Tue, 18 Apr 2023 10:32:09 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=proofpoint; bh=Y9XuBWqkAK3AOlFXQmYfyb5UQUBzu0u2R2c7hn9gQdY=; b=Fp4JPtTqJq/uRXnkmbUqM2FDpzmfchXUtrbOzCdVUFViNQEw74dqNRRE2fCVkYGlBvdM Bs8gmnHmX/4HLs6KX0ryZTsy9nb/lan+/ALatCr6wKGAyOBFeqvt31viywLwwBpziS3X 5jrNm1B1VSZmiQT/xfICJfooTCk567B8HH7U9qhYtuqDCsejj4PoX3dLde+Pr8qoqDUy ZljeJGZVhpNrJaWycrTQ445AngFIGQ+Lwn8nLqVxgRmpkN9ZO47oLGlbwxvcv4dani8I dgXPadn2gAq4OD2oYIttGTddtC0U6bxrTcCCl7U6XZ/Hn7wR+FuwPVXxMf2J++48up5L Fg== Received: from nam10-mw2-obe.outbound.protection.outlook.com (mail-mw2nam10lp2105.outbound.protection.outlook.com [104.47.55.105]) by mx0a-0014ca01.pphosted.com (PPS) with ESMTPS id 3pyrfxsga9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Apr 2023 10:32:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=H7+vj46ar2DnOAhnTWeKDMLWfxRsh3+Cz97aurAMjlaxRgRyHIYpJ7SSPLKovF+0Zlh2pdnLZyLUso/beBY4ia3G9YRtl3l6PePbTLcTAbML44PaICQFGjn4pyVEB+BpZwsOpEEnCezFvpzrbbraGLezggnwIGwvM5JQmj+a2/ZwO9ziLIVluGRIo2d6CCSSowD3SJU18AcfzCQB7Yy8ShvV/4WunIhyO7+kumM7Rul4s5ktuBqCpfZtgmk08i6CgiyAqEAn3QpzF3j/l1uXfYIwctju8HegBilTG4A4MjpMh5Y5a7ZhSK7z6kJpuxVCgUwfO+mdl6qAn2G/HYSFwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=Y9XuBWqkAK3AOlFXQmYfyb5UQUBzu0u2R2c7hn9gQdY=; b=jKfQaCLnFBjcUyyhBZu4Sc8TZk1X/vPhFmvJ/Td4IWiAFkNy7UkdOJuromCvjf11xbBqtKe2iG8LWfhOlu7I4Gadr8cQD77UUMNzT4MsJRbdXdnf/WB3irCVQy05VRwst16PRpuk39HjT1gugQS+t4rkQ5SlJZXaYRWZ4+boau72AwrqyPOKMUvYkc2eGbKRXN4bB0nsXVmqge3QWffd0okuolskohGDoGurnyrv5+eYxtO4vrWd1i8D17ZevvuOMxps6O5mRSoLV0Vw1rMDLZmOnEawtu2WWDbes+Y1+QfXplhWXeW2yJ/1L8sQJTPJGykqMutU3rI6lklwD9azRg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 64.207.220.244) smtp.rcpttodomain=ti.com smtp.mailfrom=cadence.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=cadence.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y9XuBWqkAK3AOlFXQmYfyb5UQUBzu0u2R2c7hn9gQdY=; b=flRjqQ8Ri1/DF5bDcvH9S4oT/fSZlp29nAvA9CYxqlfOQjET+6nA5hGgq3bJAowyUiczpjikt3nO5h6J9a0Eu+G0dFzH9POfXZq8ykUpTvhsc73nk20seTILLZfJryPM4pMdStkujq8T+9SBbxA8q9pxCZAnX128wU0DLBUH3Dg= Received: from DS7PR03CA0216.namprd03.prod.outlook.com (2603:10b6:5:3ba::11) by BYAPR07MB5317.namprd07.prod.outlook.com (2603:10b6:a03:66::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 17:32:05 +0000 Received: from DM6NAM12FT103.eop-nam12.prod.protection.outlook.com (2603:10b6:5:3ba:cafe::fe) by DS7PR03CA0216.outlook.office365.com (2603:10b6:5:3ba::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 17:32:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 64.207.220.244) smtp.mailfrom=cadence.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=cadence.com; Received-SPF: Pass (protection.outlook.com: domain of cadence.com designates 64.207.220.244 as permitted sender) receiver=protection.outlook.com; client-ip=64.207.220.244; helo=wcmailrelayl01.cadence.com; pr=C Received: from wcmailrelayl01.cadence.com (64.207.220.244) by DM6NAM12FT103.mail.protection.outlook.com (10.13.178.62) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.8 via Frontend Transport; Tue, 18 Apr 2023 17:32:04 +0000 Received: from maileu5.global.cadence.com (eudvw-maileu5.cadence.com [10.160.110.202]) by wcmailrelayl01.cadence.com (8.14.7/8.14.4) with ESMTP id 33IHW1LD194661 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 18 Apr 2023 10:32:03 -0700 Received: from maileu5.global.cadence.com (10.160.110.202) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 18 Apr 2023 19:32:01 +0200 Received: from vleu-orange.cadence.com (10.160.88.83) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24 via Frontend Transport; Tue, 18 Apr 2023 19:32:01 +0200 Received: from vleu-orange.cadence.com (localhost.localdomain [127.0.0.1]) by vleu-orange.cadence.com (8.14.4/8.14.4) with ESMTP id 33IHW12S025677; Tue, 18 Apr 2023 19:32:01 +0200 Received: (from sjakhade@localhost) by vleu-orange.cadence.com (8.14.4/8.14.4/Submit) id 33IHW08T025676; Tue, 18 Apr 2023 19:32:00 +0200 From: Swapnil Jakhade To: , , , CC: , , , Subject: [PATCH v3 3/4] phy: cadence-torrent: Add PCIe + DP multilink configuration for 100MHz refclk Date: Tue, 18 Apr 2023 19:31:56 +0200 Message-ID: <20230418173157.25607-4-sjakhade@cadence.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20230418173157.25607-1-sjakhade@cadence.com> References: <20230418173157.25607-1-sjakhade@cadence.com> MIME-Version: 1.0 X-CrossPremisesHeadersFilteredBySendConnector: maileu5.global.cadence.com X-OrganizationHeadersPreserved: maileu5.global.cadence.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM12FT103:EE_|BYAPR07MB5317:EE_ X-MS-Office365-Filtering-Correlation-Id: 9ea03328-f398-4eb3-10e9-08db4032d393 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QOYnTQEBxcMLJ7W3WtDAbxTd2UNEgQoQ+mDAYv0wYe/nHP+vAnr9bESrT0OtZOWz6e4iknENjbBHTuGtsQ8g2/gAnm4ACiqhBEDS3YT3cNHcg65kZ+70ZsfAdrK7IlTzHGIyJCtRsu98ZRmlxNixn8xTeUqpNQ62hP/gHcoIyJ9Kj5ASMdi3qXpyOsDqjwdblyWoVcl6N22VsK+8j+bdBGO+aFICNk5/w8nh5qzdVZX22h3BvmcmYbqOpHodKX++awo9pcC216QilYcwdsbkFN1NGGfj3GK5ScFn6zJoNiZjS2gQ4NGtEbAGec2ImCGaACyUs8mj2Twzvwv11cWLiuD8DKKMMVMLTvejaH5JbgClNCKy6U8ZN0ebays2dtCvwEPoQCik9TKpDb6jmdCtgq75SD8mHzoKODoJPI6vzgvTGgU8qvrHy0IlAVwdlerp3Kig7wtdNrqRH9foEyLNecjZhzoBSdvCVR9viDzU6y+yHmY14Oj+s0cQVNcYVPPZ7gjCxMmy2hHhJFwfX0Tev/FtRT6/5oZ5HA5XXALHPBwLQvmxrUJvWi3MhyrC4/5gKSZnAARPFg1r3pu4UYw/lH1O0P9lJvPes6WvwNlGa3pfhFHMqaR2GUqsgSVtkQ3HiA3gvCJumTtCjOO/b8er/nscVkblKUUoCdl6sdPh0MLIrBl4Y1+RMhwdP1Vko7gUPiWfpzPKsekPxgWt51oyiO7rCBSRtH+MUgyFryh6MyA7Nc3F6X0Sig/vd1NjAsrZ X-Forefront-Antispam-Report: CIP:64.207.220.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:wcmailrelayl01.cadence.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230028)(4636009)(136003)(346002)(396003)(376002)(39860400002)(36092001)(451199021)(36840700001)(46966006)(40470700004)(356005)(86362001)(40460700003)(8676002)(8936002)(2906002)(5660300002)(30864003)(478600001)(1076003)(82740400003)(26005)(81166007)(36860700001)(186003)(40480700001)(316002)(110136005)(70206006)(42186006)(36756003)(70586007)(4326008)(41300700001)(6666004)(47076005)(83380400001)(336012)(426003)(82310400005)(54906003)(2616005)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 17:32:04.4292 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9ea03328-f398-4eb3-10e9-08db4032d393 X-MS-Exchange-CrossTenant-Id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d36035c5-6ce6-4662-a3dc-e762e61ae4c9;Ip=[64.207.220.244];Helo=[wcmailrelayl01.cadence.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM12FT103.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR07MB5317 X-Proofpoint-ORIG-GUID: lwaGuuYvunD3oG22Q8XY9p6_gcbDVsW6 X-Proofpoint-GUID: lwaGuuYvunD3oG22Q8XY9p6_gcbDVsW6 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-18_12,2023-04-18_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 mlxscore=0 mlxlogscore=999 lowpriorityscore=0 adultscore=0 clxscore=1011 malwarescore=0 phishscore=0 bulkscore=0 impostorscore=0 priorityscore=1501 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304180144 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add multilink DP configuration support for 100MHz reference clock rate. This is the only clock rate supported currently for multilink PHY configurations. Also, add PCIe + DP multiprotocol multilink register configuration sequences for 100MHz refclk with no SSC. Signed-off-by: Swapnil Jakhade --- drivers/phy/cadence/phy-cadence-torrent.c | 284 +++++++++++++++++----- 1 file changed, 227 insertions(+), 57 deletions(-) diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadenc= e/phy-cadence-torrent.c index cef63d4a93b7..2fc5dd495ad0 100644 --- a/drivers/phy/cadence/phy-cadence-torrent.c +++ b/drivers/phy/cadence/phy-cadence-torrent.c @@ -904,74 +904,90 @@ void cdns_torrent_dp_pma_cmn_vco_cfg_100mhz(struct cd= ns_torrent_phy *cdns_phy, /* Setting VCO for 10.8GHz */ case 2700: case 5400: - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0028); - cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_FBH_OVRD_M0, 0x0022); - cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_FBH_OVRD_M0, 0x0022); - cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_FBL_OVRD_M0, 0x000C); + if (cdns_phy->dp_pll & DP_PLL0) + cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_FBH_OVRD_M0, 0x0022); + + if (cdns_phy->dp_pll & DP_PLL1) { + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0028); + cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_FBH_OVRD_M0, 0x0022); + cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_FBL_OVRD_M0, 0x000C); + } break; /* Setting VCO for 9.72GHz */ case 1620: case 2430: case 3240: - cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0061); - cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0061); - cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVL_M0, 0x3333); - cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVL_M0, 0x3333); - cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x0042); - cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x0042); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + if (cdns_phy->dp_pll & DP_PLL0) { + cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0061); + cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVL_M0, 0x3333); + cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x0042); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); + } + if (cdns_phy->dp_pll & DP_PLL1) { + cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0061); + cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVL_M0, 0x3333); + cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x0042); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + } break; /* Setting VCO for 8.64GHz */ case 2160: case 4320: - cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0056); - cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0056); - cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVL_M0, 0x6666); - cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVL_M0, 0x6666); - cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x003A); - cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x003A); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + if (cdns_phy->dp_pll & DP_PLL0) { + cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0056); + cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVL_M0, 0x6666); + cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x003A); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); + } + if (cdns_phy->dp_pll & DP_PLL1) { + cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0056); + cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVL_M0, 0x6666); + cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x003A); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + } break; /* Setting VCO for 8.1GHz */ case 8100: - cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); - cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0051); - cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0051); - cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x0036); - cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x0036); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); - cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + if (cdns_phy->dp_pll & DP_PLL0) { + cdns_torrent_phy_write(regmap, CMN_PLL0_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL0_INTDIV_M0, 0x0051); + cdns_torrent_phy_write(regmap, CMN_PLL0_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL0_HIGH_THR_M0, 0x0036); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL0_CTRL_M0, 0x0002); + } + if (cdns_phy->dp_pll & DP_PLL1) { + cdns_torrent_phy_write(regmap, CMN_PLL1_DSM_DIAG_M0, 0x0004); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_PADJ_M0, 0x0509); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CP_IADJ_M0, 0x0F00); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_FILT_PADJ_M0, 0x0F08); + cdns_torrent_phy_write(regmap, CMN_PLL1_INTDIV_M0, 0x0051); + cdns_torrent_phy_write(regmap, CMN_PLL1_FRACDIVH_M0, 0x0002); + cdns_torrent_phy_write(regmap, CMN_PLL1_HIGH_THR_M0, 0x0036); + cdns_torrent_phy_write(regmap, CMN_PDIAG_PLL1_CTRL_M0, 0x0002); + } break; } } @@ -1708,6 +1724,20 @@ static int cdns_torrent_dp_init(struct phy *phy) return cdns_torrent_dp_start(cdns_phy, inst, phy); } =20 +static int cdns_torrent_dp_multilink_init(struct cdns_torrent_phy *cdns_ph= y, + struct cdns_torrent_inst *inst, + struct phy *phy) +{ + if (cdns_phy->ref_clk_rate !=3D CLK_100_MHZ) { + dev_err(cdns_phy->dev, "Unsupported Ref Clock Rate\n"); + return -EINVAL; + } + + cdns_torrent_dp_common_init(cdns_phy, inst); + + return cdns_torrent_dp_start(cdns_phy, inst, phy); +} + static int cdns_torrent_derived_refclk_enable(struct clk_hw *hw) { struct cdns_torrent_derived_refclk *derived_refclk =3D to_cdns_torrent_de= rived_refclk(hw); @@ -2219,8 +2249,11 @@ static int cdns_torrent_phy_init(struct phy *phy) u32 num_regs; int i, j; =20 - if (cdns_phy->nsubnodes > 1) + if (cdns_phy->nsubnodes > 1) { + if (phy_type =3D=3D TYPE_DP) + return cdns_torrent_dp_multilink_init(cdns_phy, inst, phy); return 0; + } =20 /** * Spread spectrum generation is not required or supported @@ -2462,6 +2495,12 @@ int cdns_torrent_phy_configure_multilink(struct cdns= _torrent_phy *cdns_phy) } } =20 + if (phy_t1 =3D=3D TYPE_DP) { + ret =3D cdns_torrent_dp_get_pll(cdns_phy, phy_t2); + if (ret) + return ret; + } + reset_control_deassert(cdns_phy->phys[node].lnk_rst); } =20 @@ -2857,6 +2896,77 @@ static void cdns_torrent_phy_remove(struct platform_= device *pdev) cdns_torrent_clk_cleanup(cdns_phy); } =20 +/* PCIe and DP link configuration */ +static struct cdns_reg_pairs pcie_dp_link_cmn_regs[] =3D { + {0x0003, PHY_PLL_CFG}, + {0x0601, CMN_PDIAG_PLL0_CLK_SEL_M0}, + {0x0400, CMN_PDIAG_PLL0_CLK_SEL_M1} +}; + +static struct cdns_reg_pairs pcie_dp_xcvr_diag_ln_regs[] =3D { + {0x0000, XCVR_DIAG_HSCLK_SEL}, + {0x0001, XCVR_DIAG_HSCLK_DIV}, + {0x0012, XCVR_DIAG_PLLDRC_CTRL} +}; + +static struct cdns_reg_pairs dp_pcie_xcvr_diag_ln_regs[] =3D { + {0x0001, XCVR_DIAG_HSCLK_SEL}, + {0x0009, XCVR_DIAG_PLLDRC_CTRL} +}; + +static struct cdns_torrent_vals pcie_dp_link_cmn_vals =3D { + .reg_pairs =3D pcie_dp_link_cmn_regs, + .num_regs =3D ARRAY_SIZE(pcie_dp_link_cmn_regs), +}; + +static struct cdns_torrent_vals pcie_dp_xcvr_diag_ln_vals =3D { + .reg_pairs =3D pcie_dp_xcvr_diag_ln_regs, + .num_regs =3D ARRAY_SIZE(pcie_dp_xcvr_diag_ln_regs), +}; + +static struct cdns_torrent_vals dp_pcie_xcvr_diag_ln_vals =3D { + .reg_pairs =3D dp_pcie_xcvr_diag_ln_regs, + .num_regs =3D ARRAY_SIZE(dp_pcie_xcvr_diag_ln_regs), +}; + +/* DP Multilink, 100 MHz Ref clk, no SSC */ +static struct cdns_reg_pairs dp_100_no_ssc_cmn_regs[] =3D { + {0x007F, CMN_TXPUCAL_TUNE}, + {0x007F, CMN_TXPDCAL_TUNE} +}; + +static struct cdns_reg_pairs dp_100_no_ssc_tx_ln_regs[] =3D { + {0x00FB, TX_PSC_A0}, + {0x04AA, TX_PSC_A2}, + {0x04AA, TX_PSC_A3}, + {0x000F, XCVR_DIAG_BIDI_CTRL} +}; + +static struct cdns_reg_pairs dp_100_no_ssc_rx_ln_regs[] =3D { + {0x0000, RX_PSC_A0}, + {0x0000, RX_PSC_A2}, + {0x0000, RX_PSC_A3}, + {0x0000, RX_PSC_CAL}, + {0x0000, RX_REE_GCSM1_CTRL}, + {0x0000, RX_REE_GCSM2_CTRL}, + {0x0000, RX_REE_PERGCSM_CTRL} +}; + +static struct cdns_torrent_vals dp_100_no_ssc_cmn_vals =3D { + .reg_pairs =3D dp_100_no_ssc_cmn_regs, + .num_regs =3D ARRAY_SIZE(dp_100_no_ssc_cmn_regs), +}; + +static struct cdns_torrent_vals dp_100_no_ssc_tx_ln_vals =3D { + .reg_pairs =3D dp_100_no_ssc_tx_ln_regs, + .num_regs =3D ARRAY_SIZE(dp_100_no_ssc_tx_ln_regs), +}; + +static struct cdns_torrent_vals dp_100_no_ssc_rx_ln_vals =3D { + .reg_pairs =3D dp_100_no_ssc_rx_ln_regs, + .num_regs =3D ARRAY_SIZE(dp_100_no_ssc_rx_ln_regs), +}; + /* Single DisplayPort(DP) link configuration */ static struct cdns_reg_pairs sl_dp_link_cmn_regs[] =3D { {0x0000, PHY_PLL_CFG}, @@ -3799,6 +3909,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_link_cmn_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &pcie_dp_link_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -3821,6 +3934,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &pcie_usb_link_cmn_vals, [INTERNAL_SSC] =3D &pcie_usb_link_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_dp_link_cmn_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -3880,6 +3996,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_xcvr_diag_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_pcie_xcvr_diag_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -3902,6 +4021,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &pcie_usb_xcvr_diag_ln_vals, [INTERNAL_SSC] =3D &pcie_usb_xcvr_diag_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_dp_xcvr_diag_ln_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4000,6 +4122,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_cmn_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4022,6 +4147,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &pcie_100_no_ssc_cmn_vals, [INTERNAL_SSC] =3D &pcie_100_int_ssc_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D NULL, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4097,6 +4225,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_tx_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4119,6 +4250,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D NULL, [INTERNAL_SSC] =3D NULL, }, + [TYPE_DP] =3D { + [NO_SSC] =3D NULL, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4194,6 +4328,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_rx_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4216,6 +4353,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, [INTERNAL_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4281,6 +4421,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_link_cmn_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &pcie_dp_link_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4303,6 +4446,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &pcie_usb_link_cmn_vals, [INTERNAL_SSC] =3D &pcie_usb_link_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_dp_link_cmn_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4362,6 +4508,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_xcvr_diag_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_pcie_xcvr_diag_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4384,6 +4533,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &pcie_usb_xcvr_diag_ln_vals, [INTERNAL_SSC] =3D &pcie_usb_xcvr_diag_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_dp_xcvr_diag_ln_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4482,6 +4634,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_cmn_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4504,6 +4659,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &pcie_100_no_ssc_cmn_vals, [INTERNAL_SSC] =3D &pcie_100_int_ssc_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D NULL, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4579,6 +4737,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_tx_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4601,6 +4762,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D NULL, [INTERNAL_SSC] =3D NULL, }, + [TYPE_DP] =3D { + [NO_SSC] =3D NULL, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { @@ -4676,6 +4840,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_NONE] =3D { [NO_SSC] =3D &sl_dp_100_no_ssc_rx_ln_vals, }, + [TYPE_PCIE] =3D { + [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4698,6 +4865,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, [INTERNAL_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &pcie_100_no_ssc_rx_ln_vals, + }, }, [TYPE_SGMII] =3D { [TYPE_NONE] =3D { --=20 2.34.1 From nobody Mon Sep 8 16:20:28 2025 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A7DF8C77B75 for ; Tue, 18 Apr 2023 17:33:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232539AbjDRRda (ORCPT ); Tue, 18 Apr 2023 13:33:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44496 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232513AbjDRRd0 (ORCPT ); Tue, 18 Apr 2023 13:33:26 -0400 Received: from mx0a-0014ca01.pphosted.com (mx0b-0014ca01.pphosted.com [208.86.201.193]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A67BAF12 for ; Tue, 18 Apr 2023 10:32:58 -0700 (PDT) Received: from pps.filterd (m0042333.ppops.net [127.0.0.1]) by mx0b-0014ca01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 33IFlILW026562; Tue, 18 Apr 2023 10:32:10 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-type; s=proofpoint; bh=tjM/QYG4TF54NGqBnfWAbRE8E4r5yQji/WvPO0FLt2s=; b=mdTM/iR5t550rX43b0/y9hwrb3xPLr0UHp/40fFlCDF4Ji0yJCHAe+ryKAMejiZPPrp4 pVcB1Cb9CSs1VNttlDP3oJE47llDE9uEJIc8oP1gSKq5cBrVoEfzji3uxcfNR8alhn3h errJAW94qxTe/450LvjKLEP9EumOvYu3szbVl08h5UcO75lnvTzxs9x+t3DGR1b6ueFo 6UZhwjo3x8LDzPKo9yNsiBOu+yH1tug/SptzPpHX2gy/x8BaYSaUtsCOxHrqgY8bCu1/ tQ35YTVblO2di+dR2vorDWfkbq4+e53U+N1tXR5bmuCNPSzw09MJ2nc97loJ6XUf7BvN 1g== Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175]) by mx0b-0014ca01.pphosted.com (PPS) with ESMTPS id 3q1x590e7g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 18 Apr 2023 10:32:09 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nawTO1kiDrZ7WiUGGFAmcljjLKbg+EOg3NO2w46XbTWhTH77tT974wAwzRBHMZ6Mltuxb/HjNcD/2fjDJBKfGwC4s00niqnJRZ7ld7vR/2WJkQWhSP2fSz+oYUem4KH6zQCFDeBFakNakMBHXzazWSFp53YdLSw2xjiQzx20sgdd5S6d4lp+5yeZY2GgCt+5FpG+DP9LT7LBYZYyW+DYydZQj4KF3Ti+m/7Td9Ck7cCRp+YB+cwLiwpXfbuwN1cxv86ry7yw68t1VjCjS9BAbEdLDGAn7nMw3aKShUDhgqvM9CskzMLNyLENWtUoV9tAcV/pQKaGb0/yEmKeSScjpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tjM/QYG4TF54NGqBnfWAbRE8E4r5yQji/WvPO0FLt2s=; b=jrGJPE3B1gsAKxJiXp18NfS2lm8Xr1zQxEB7qaOG8Gyeb9qsgJgkYIeVOnkzOigiBwKEkrZs0BBnhI/wg2scrOl16CVB4rLAnPhXZPwct9Tj48nqHY31Zrqdj2aGRhpEJtqPa+YPeYydrJ/0jCCu50EjlddkCbB1Vv4E6WAtWQMTv16DaCBzaWZSGlssAiOLusDNp+dUaVTZzHvW1MXPEsmg3CGtXI7eh080DFjIJyHF4GxIPWVCRL3DMAwXAOkSqZolUvKUFBvCAqOCYpvkQ3vHgLO3pz8JchQu9nWOWL93GlJCOx9nVFO12Aser0XrcnDfQTLq3zJsK6+UXYI4Kg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 64.207.220.244) smtp.rcpttodomain=ti.com smtp.mailfrom=cadence.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=cadence.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cadence.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tjM/QYG4TF54NGqBnfWAbRE8E4r5yQji/WvPO0FLt2s=; b=aN9Zwm9cZuuCk7OwYBycV9BbPKkN3GRdVISuQBPyfrx39HRSebfhLYlKllho2myr+JCfseHFR6DboGjEorFoVzxPO5bHA+NEa1+9tLvDgY3OIjHnB/ij2peii0lLt0zebV/SiphTB8+pHCOqKHtfAdU6ql2c9UTgDZNCuqnv7ys= Received: from DM6PR05CA0044.namprd05.prod.outlook.com (2603:10b6:5:335::13) by BN8PR07MB6145.namprd07.prod.outlook.com (2603:10b6:408:b0::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6298.45; Tue, 18 Apr 2023 17:32:06 +0000 Received: from DM6NAM12FT075.eop-nam12.prod.protection.outlook.com (2603:10b6:5:335:cafe::44) by DM6PR05CA0044.outlook.office365.com (2603:10b6:5:335::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6319.20 via Frontend Transport; Tue, 18 Apr 2023 17:32:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 64.207.220.244) smtp.mailfrom=cadence.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=cadence.com; Received-SPF: Pass (protection.outlook.com: domain of cadence.com designates 64.207.220.244 as permitted sender) receiver=protection.outlook.com; client-ip=64.207.220.244; helo=wcmailrelayl01.cadence.com; pr=C Received: from wcmailrelayl01.cadence.com (64.207.220.244) by DM6NAM12FT075.mail.protection.outlook.com (10.13.178.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6340.6 via Frontend Transport; Tue, 18 Apr 2023 17:32:04 +0000 Received: from maileu5.global.cadence.com (eudvw-maileu5.cadence.com [10.160.110.202]) by wcmailrelayl01.cadence.com (8.14.7/8.14.4) with ESMTP id 33IHW1LE194661 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=OK); Tue, 18 Apr 2023 10:32:04 -0700 Received: from maileu5.global.cadence.com (10.160.110.202) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Tue, 18 Apr 2023 19:32:02 +0200 Received: from vleu-orange.cadence.com (10.160.88.83) by maileu5.global.cadence.com (10.160.110.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24 via Frontend Transport; Tue, 18 Apr 2023 19:32:02 +0200 Received: from vleu-orange.cadence.com (localhost.localdomain [127.0.0.1]) by vleu-orange.cadence.com (8.14.4/8.14.4) with ESMTP id 33IHW1Sl025686; Tue, 18 Apr 2023 19:32:01 +0200 Received: (from sjakhade@localhost) by vleu-orange.cadence.com (8.14.4/8.14.4/Submit) id 33IHW1wf025685; Tue, 18 Apr 2023 19:32:01 +0200 From: Swapnil Jakhade To: , , , CC: , , , Subject: [PATCH v3 4/4] phy: cadence-torrent: Add USB + DP multilink configuration Date: Tue, 18 Apr 2023 19:31:57 +0200 Message-ID: <20230418173157.25607-5-sjakhade@cadence.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20230418173157.25607-1-sjakhade@cadence.com> References: <20230418173157.25607-1-sjakhade@cadence.com> MIME-Version: 1.0 X-CrossPremisesHeadersFilteredBySendConnector: maileu5.global.cadence.com X-OrganizationHeadersPreserved: maileu5.global.cadence.com X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DM6NAM12FT075:EE_|BN8PR07MB6145:EE_ X-MS-Office365-Filtering-Correlation-Id: 43918a04-83d0-49e0-b226-08db4032d3de X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: HNsuQ/6OZChf9Xfv7LPxTVx+h24mIrlKQu7pRSvb8ABlJvqrzjTWTyP+weCmsVs1dzjdo24UBqjJje+1WOzhl3VnFLUV8W5Mz4RyffT5xNpjKlS6yAuOsR/6SmztRrlCd2yyizQvEkSpjVJkMFKohCJ4Y0FOb5Kmw5grOSyCUcGuoAZx675WZ26/G+ywaS9B/+zNdpUECm6RVwO4184XtE3Tq2xzwTXZpk/olFKeHMC9mne+EFa7/F9u8Cunh/TWN0Ay9irbp6v8oTPd5J5cARD3zCOd9V0pK9ZTT8mQ/6R6+LsLGBgzQ1mzWO12VEXEOI6UbRXVzFhNMfKjm+DlsQOksRlMF1+hqj6/1OlZm0JfF9qpOvS7H1tnJF60GbJs/0x89Nc7AVEYf8JcspjW051O+HgSNwkTF5MRhYSQBXPKXWqFW1LWkqT9iD8zbop0acMG39QlxLar6AgKdAc+A9ep4mRmRjs336pZMo+6RFFiMEx5vcVRaqDQu3OPSwIYMizObNfrWfeKpYcjPXt7FcE2+AO7K+XkajEuQ9l3MQKgNwe84kTkI9e7h/zrbtiTMzKd2bwA+eIQuE39h0oGCoDybHF+6TTK+OnUC8ZfOcYPFEKrFhQF/YxBp7pdQK0IV70r/ca1BaRQraamzMwv3haKNwSTeg3D9liGnzu6pxp3yDqFrnjEEpnj2qtGbpTC0QjEClvOgdO+COQ6cwsJqTqBcf1qSg6GirNCuw+a+LajxlfwRdJKZk0pawyEX05g X-Forefront-Antispam-Report: CIP:64.207.220.244;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:wcmailrelayl01.cadence.com;PTR:ErrorRetry;CAT:NONE;SFS:(13230028)(4636009)(396003)(376002)(346002)(39860400002)(136003)(36092001)(451199021)(36840700001)(40470700004)(46966006)(6666004)(5660300002)(82310400005)(8936002)(40460700003)(54906003)(110136005)(316002)(42186006)(41300700001)(40480700001)(478600001)(70206006)(8676002)(4326008)(70586007)(36756003)(82740400003)(356005)(2616005)(36860700001)(81166007)(1076003)(86362001)(2906002)(26005)(186003)(336012)(47076005)(426003)(36900700001);DIR:OUT;SFP:1101; X-OriginatorOrg: cadence.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2023 17:32:04.9249 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 43918a04-83d0-49e0-b226-08db4032d3de X-MS-Exchange-CrossTenant-Id: d36035c5-6ce6-4662-a3dc-e762e61ae4c9 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=d36035c5-6ce6-4662-a3dc-e762e61ae4c9;Ip=[64.207.220.244];Helo=[wcmailrelayl01.cadence.com] X-MS-Exchange-CrossTenant-AuthSource: DM6NAM12FT075.eop-nam12.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR07MB6145 X-Proofpoint-ORIG-GUID: Cvh90TrA1sgKMD98-1Xp2NzRQ7Ksq88x X-Proofpoint-GUID: Cvh90TrA1sgKMD98-1Xp2NzRQ7Ksq88x X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-04-18_13,2023-04-18_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_check_notspam policy=outbound_check score=0 impostorscore=0 suspectscore=0 mlxlogscore=799 lowpriorityscore=0 malwarescore=0 bulkscore=0 adultscore=0 phishscore=0 priorityscore=1501 mlxscore=0 spamscore=0 clxscore=1015 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303200000 definitions=main-2304180144 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add USB + DP no SSC multilink configuration sequences. Signed-off-by: Swapnil Jakhade --- drivers/phy/cadence/phy-cadence-torrent.c | 98 +++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/drivers/phy/cadence/phy-cadence-torrent.c b/drivers/phy/cadenc= e/phy-cadence-torrent.c index 2fc5dd495ad0..3b0e4daa9de9 100644 --- a/drivers/phy/cadence/phy-cadence-torrent.c +++ b/drivers/phy/cadence/phy-cadence-torrent.c @@ -2896,6 +2896,38 @@ static void cdns_torrent_phy_remove(struct platform_= device *pdev) cdns_torrent_clk_cleanup(cdns_phy); } =20 +/* USB and DP link configuration */ +static struct cdns_reg_pairs usb_dp_link_cmn_regs[] =3D { + {0x0002, PHY_PLL_CFG}, + {0x8600, CMN_PDIAG_PLL0_CLK_SEL_M0} +}; + +static struct cdns_reg_pairs usb_dp_xcvr_diag_ln_regs[] =3D { + {0x0000, XCVR_DIAG_HSCLK_SEL}, + {0x0001, XCVR_DIAG_HSCLK_DIV}, + {0x0041, XCVR_DIAG_PLLDRC_CTRL} +}; + +static struct cdns_reg_pairs dp_usb_xcvr_diag_ln_regs[] =3D { + {0x0001, XCVR_DIAG_HSCLK_SEL}, + {0x0009, XCVR_DIAG_PLLDRC_CTRL} +}; + +static struct cdns_torrent_vals usb_dp_link_cmn_vals =3D { + .reg_pairs =3D usb_dp_link_cmn_regs, + .num_regs =3D ARRAY_SIZE(usb_dp_link_cmn_regs), +}; + +static struct cdns_torrent_vals usb_dp_xcvr_diag_ln_vals =3D { + .reg_pairs =3D usb_dp_xcvr_diag_ln_regs, + .num_regs =3D ARRAY_SIZE(usb_dp_xcvr_diag_ln_regs), +}; + +static struct cdns_torrent_vals dp_usb_xcvr_diag_ln_vals =3D { + .reg_pairs =3D dp_usb_xcvr_diag_ln_regs, + .num_regs =3D ARRAY_SIZE(dp_usb_xcvr_diag_ln_regs), +}; + /* PCIe and DP link configuration */ static struct cdns_reg_pairs pcie_dp_link_cmn_regs[] =3D { {0x0003, PHY_PLL_CFG}, @@ -3912,6 +3944,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &pcie_dp_link_cmn_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &usb_dp_link_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -3989,6 +4024,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &usb_sgmii_link_cmn_vals, [INTERNAL_SSC] =3D &usb_sgmii_link_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_dp_link_cmn_vals, + }, }, }, .xcvr_diag_vals =3D { @@ -3999,6 +4037,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_pcie_xcvr_diag_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_usb_xcvr_diag_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4076,6 +4117,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &usb_sgmii_xcvr_diag_ln_vals, [INTERNAL_SSC] =3D &usb_sgmii_xcvr_diag_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_dp_xcvr_diag_ln_vals, + }, }, }, .pcs_cmn_vals =3D { @@ -4100,6 +4144,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &usb_phy_pcs_cmn_vals, [INTERNAL_SSC] =3D &usb_phy_pcs_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_phy_pcs_cmn_vals, + }, }, }, .cmn_vals =3D { @@ -4125,6 +4172,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_cmn_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &sl_dp_100_no_ssc_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4202,6 +4252,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &sl_usb_100_no_ssc_cmn_vals, [INTERNAL_SSC] =3D &sl_usb_100_int_ssc_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_cmn_vals, + }, }, }, }, @@ -4228,6 +4281,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4305,6 +4361,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &usb_100_no_ssc_tx_ln_vals, [INTERNAL_SSC] =3D &usb_100_no_ssc_tx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_tx_ln_vals, + }, }, }, }, @@ -4331,6 +4390,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4408,6 +4470,9 @@ static const struct cdns_torrent_data cdns_map_torren= t =3D { [EXTERNAL_SSC] =3D &usb_100_no_ssc_rx_ln_vals, [INTERNAL_SSC] =3D &usb_100_no_ssc_rx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_rx_ln_vals, + }, }, }, }, @@ -4424,6 +4489,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &pcie_dp_link_cmn_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &usb_dp_link_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4501,6 +4569,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &usb_sgmii_link_cmn_vals, [INTERNAL_SSC] =3D &usb_sgmii_link_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_dp_link_cmn_vals, + }, }, }, .xcvr_diag_vals =3D { @@ -4511,6 +4582,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_pcie_xcvr_diag_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_usb_xcvr_diag_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4588,6 +4662,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &usb_sgmii_xcvr_diag_ln_vals, [INTERNAL_SSC] =3D &usb_sgmii_xcvr_diag_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_dp_xcvr_diag_ln_vals, + }, }, }, .pcs_cmn_vals =3D { @@ -4612,6 +4689,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &usb_phy_pcs_cmn_vals, [INTERNAL_SSC] =3D &usb_phy_pcs_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_phy_pcs_cmn_vals, + }, }, }, .cmn_vals =3D { @@ -4637,6 +4717,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_cmn_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &sl_dp_100_no_ssc_cmn_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4714,6 +4797,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &sl_usb_100_no_ssc_cmn_vals, [INTERNAL_SSC] =3D &sl_usb_100_int_ssc_cmn_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_cmn_vals, + }, }, }, }, @@ -4740,6 +4826,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_100_no_ssc_tx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4817,6 +4906,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &usb_100_no_ssc_tx_ln_vals, [INTERNAL_SSC] =3D &usb_100_no_ssc_tx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_tx_ln_vals, + }, }, }, }, @@ -4843,6 +4935,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [TYPE_PCIE] =3D { [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, }, + [TYPE_USB] =3D { + [NO_SSC] =3D &dp_100_no_ssc_rx_ln_vals, + }, }, [TYPE_PCIE] =3D { [TYPE_NONE] =3D { @@ -4920,6 +5015,9 @@ static const struct cdns_torrent_data ti_j721e_map_to= rrent =3D { [EXTERNAL_SSC] =3D &usb_100_no_ssc_rx_ln_vals, [INTERNAL_SSC] =3D &usb_100_no_ssc_rx_ln_vals, }, + [TYPE_DP] =3D { + [NO_SSC] =3D &usb_100_no_ssc_rx_ln_vals, + }, }, }, }, --=20 2.34.1