From patchwork Sun Mar 16 04:09:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krishna Chaitanya Chundru X-Patchwork-Id: 14018299 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C6A1E14D2A0 for ; Sun, 16 Mar 2025 04:09:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098163; cv=none; b=M+H3y94nsVNXbTe8rczN9ma06ME2z0mLr+t8qNohdwplwAAD8dSEKV6iT4DtBreicgZntVODaGh1dCGl7BYKl7e7JATogIbLzRsew5eL86K2VS4dehSe/ZwXPE+70tpmIg3c5GZMMcWGF5WXio8P6w2yRYDSoLU0tTqmxS3bEK4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098163; c=relaxed/simple; bh=3xtlvs1vbdz9Lx9DTGncf10UyrhBPWHbtrA9J6tHahs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Xyz9YGgq0lssM8joJMVau4wpW/xF4mkjeHszrXg5xOQNGDfZ8VDbLONZwC8iujaKSfHTw9PlPVFmOjv9B0xuR56mJZBBgzl94e6eABkYjyX/fl/S17ApnqA/o1kZAW4Yuxyp8HzinOw73TMHJbzRRZyp8bcag7B+KBfpRhR/gVM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=F/ScJK1m; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="F/ScJK1m" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52G40ZRW006571 for ; Sun, 16 Mar 2025 04:09:21 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= OOCWk2D0zXdlqRt97flBwH+ovhY8VuJGcvABkqQ95gA=; b=F/ScJK1m8GGpnzug BS1I73SmDQmHhLuB9acV9ymru/fXAO91Cd9MsUkv4dL76RO0YTzPdcIxKXa3mKP0 A9/O4GPQ1kQgN7jXjYUgO1Z9VI/QrPGJkZBopoPeDXlxdO00PtLVC/4+vTLnLbPi B5Sh8F3J7SlHjUSG2cea1Mo+R4p9hx0HqKoevGeRg+y5ApWYyNhr5f8aq8Bkuglr Qp+yO2qPhTETLkZmC5eN2sOHngtap6JV6iIKtEQzUE4jUzdi/3suGtxwfEezEoUm lySj2E/R1aKA1Y1XHv3eFJxmUPLN1vMsdzhwDe5EogkhMgT0Fe2aBZv92veC9A69 EOlXjQ== Received: from mail-pj1-f70.google.com (mail-pj1-f70.google.com [209.85.216.70]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45d1s3snmx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sun, 16 Mar 2025 04:09:20 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-2ff78bd3026so1234660a91.1 for ; Sat, 15 Mar 2025 21:09:20 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742098160; x=1742702960; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OOCWk2D0zXdlqRt97flBwH+ovhY8VuJGcvABkqQ95gA=; b=WtDcs8d/qqhVNTlsX63lCwWidXHE/wD1J2cWRY3y9KgOp+ej5c7dvtVIAJ8iJjIZ6K DnEaBua9/V3AWtmJCO2Q4dHRhl66qUbG2sncMvZzAzZ5g+q+57UMlqjyX3MoYLLyi5sz Eax/4M/73VBTiVyCp+3fio0VoLe+Z7UiRaKpfklldkuKUTrHS95LPDm1VeAcBlN6DE5U bg9LmMmIVoQ+f+bP3skW1cxFccvwngEEbcJIFV4cjk8/1m+4li2a4DUUAtSC080CA2Dw S/ui+SFXQQ1pF4IzS8wfAFIUgFOZl47r1a521nZw4A6R7KzGcGNuE9DRoH/GOQQzBb2O lo4g== X-Forwarded-Encrypted: i=1; AJvYcCWtydW86sWj9zgn8bwVhKAR669HEOHtGx18wqhl/l0Z3yCLGcoB5KYWdEiHmS/I4CzRWKCmJwbiKN8=@vger.kernel.org X-Gm-Message-State: AOJu0Ywe04Msl0CWqPreZj0OgxZe334kNxCuQ7Z29HCjHS6i0+NhV8mv 9s32QehIWeb6rpYiQdKSIaiEI2GbFVeYNJmkq3tnhizgbqq3OzoAcAzbte8o75GokE5N3lMNj7h idNm7rhshwvp4dPb2f59Ed8ugFe4fT3Qh00y04J587vw3Woh1Orb1Mc7D+0k= X-Gm-Gg: ASbGncvb455HDptPuZEFb2yYyQ984LuTDc+Fl3861/GeVoPVsxxzyBBL+cMlxP53qfI 7v4WBRkSFGXNuIWjrQS/wkU/nIl9p9hATHGv3RfC3MNqr18Sh0/7pcyuleib0mtPI5csiAPpo7y RnqXJ+EmXW9HUys5GHfi+HVre+ZpgpWRlUAdmhiloeY8/e7iMYHuH/gwkjg5FqoVyIU4lKyf7Jp nbPYyK2SJ6VW0BJs0QYaCcdYbYGHKLv34is5QUFs6NsjYKdfjie/bk2sxks5SrwwUYcDKWDHqyB pUBFfu/H4n3IFU84BaLcdPoWvvs50/gl7NAtkuxZDj+sq1cgo7o= X-Received: by 2002:a17:90b:4b86:b0:2ff:556f:be8 with SMTP id 98e67ed59e1d1-30151ced707mr10339025a91.16.1742098159939; Sat, 15 Mar 2025 21:09:19 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFaO9Xhh1LVIUXCc3nNgt4F1e7bpW4bW6YzCeWOgUkjC6fIlE88SVkaRrW3Dp09QjwJPH0u5g== X-Received: by 2002:a17:90b:4b86:b0:2ff:556f:be8 with SMTP id 98e67ed59e1d1-30151ced707mr10339001a91.16.1742098159565; Sat, 15 Mar 2025 21:09:19 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30153bc301esm3490438a91.49.2025.03.15.21.09.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Mar 2025 21:09:19 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sun, 16 Mar 2025 09:39:01 +0530 Subject: [PATCH v8 1/4] arm64: dts: qcom: x1e80100: Add PCIe lane equalization preset properties Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250316-preset_v6-v8-1-0703a78cb355@oss.qualcomm.com> References: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> In-Reply-To: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Helgaas , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84?= =?utf-8?q?ski?= Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_mrana@quicinc.com, quic_vbadigan@quicinc.com, Krishna Chaitanya Chundru , Konrad Dybcio X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1742098148; l=1925; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=3xtlvs1vbdz9Lx9DTGncf10UyrhBPWHbtrA9J6tHahs=; b=D/JtwlhFqZH9afzkcd9ro4t8sceM5Iegcnj4mneC6tRh56ANpJVHfghfaxrbI1VbjffXF4HCu 8qjEgU3lCqBBc2iD40AOmDATLHoly7hvJXLzEz8DAxLigheG9pycczD X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Authority-Analysis: v=2.4 cv=WbQMa1hX c=1 sm=1 tr=0 ts=67d64ef0 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Vs1iUdzkB0EA:10 a=NEAV23lmAAAA:8 a=EUspDBNiAAAA:8 a=KKAkSRfTAAAA:8 a=TRJGHeO7bdl8qYu8Ap8A:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: tLwO7j1ryjM_5itC9ATARUnh9jtQWOo- X-Proofpoint-ORIG-GUID: tLwO7j1ryjM_5itC9ATARUnh9jtQWOo- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-16_01,2025-03-14_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 mlxlogscore=999 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 mlxscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503160029 Add PCIe lane equalization preset properties for 8 GT/s and 16 GT/s data rates used in lane equalization procedure. Signed-off-by: Krishna Chaitanya Chundru Reviewed-by: Konrad Dybcio Reviewed-by: Manivannan Sadhasivam --- This patch depends on the this dt binding pull request which got recently merged: https://github.com/devicetree-org/dt-schema/pull/146 --- --- arch/arm64/boot/dts/qcom/x1e80100.dtsi | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/arch/arm64/boot/dts/qcom/x1e80100.dtsi b/arch/arm64/boot/dts/qcom/x1e80100.dtsi index 4936fa5b98ff..9f14dd13d02e 100644 --- a/arch/arm64/boot/dts/qcom/x1e80100.dtsi +++ b/arch/arm64/boot/dts/qcom/x1e80100.dtsi @@ -3209,6 +3209,10 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&pcie3_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555 + 0x5555 0x5555 0x5555 0x5555>; + eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55 0x55 0x55 0x55 0x55>; + operating-points-v2 = <&pcie3_opp_table>; status = "disabled"; @@ -3411,6 +3415,9 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&pcie6a_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555 0x5555 0x5555>; + eq-presets-16gts = /bits/ 8 <0x55 0x55 0x55 0x55>; + status = "disabled"; }; @@ -3538,6 +3545,8 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&pcie5_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555>; + status = "disabled"; }; @@ -3662,6 +3671,8 @@ &mc_virt SLAVE_EBI1 QCOM_ICC_TAG_ALWAYS>, phys = <&pcie4_phy>; phy-names = "pciephy"; + eq-presets-8gts = /bits/ 16 <0x5555 0x5555>; + status = "disabled"; pcie4_port0: pcie@0 { From patchwork Sun Mar 16 04:09:02 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krishna Chaitanya Chundru X-Patchwork-Id: 14018300 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A2CDE17BB16 for ; Sun, 16 Mar 2025 04:09:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098169; cv=none; b=WTYTfQaCpPMv0SFUw5RzCBQ66NR7nsdVbG+V/skQD+9yr1wO0dch+S0VbH521f0OH+Y75MGtCxBVa2vOHW13v//eU7asudiic35rgu3HvyV6ql90h0TPcDz+mk3lgizc/xJvU9B15h8njwGxG5WXOI24nqYatICcu4FUCtkvk+c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098169; c=relaxed/simple; bh=yWEF9FfgSMro3JM5NRtiJnP4N/6t+P4l+2CN6d00taU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=bexKf8SxFzgDapNEddrSP/7WNCfxyzy/4hOmF/ttx6blyEJ6OpLrPdsYl8jG5C8E6LAzbHawxzYIcysCzKTV5xPJG4NmcvWdNdF79PztEyDRT8k8NuNwAzs2jd6T3/KkVyJOAbk88KwhT20FC/cOXxU91E5BBoEQbAidm/CMcsI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=m8ITsgk+; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="m8ITsgk+" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52G3qbhE032331 for ; Sun, 16 Mar 2025 04:09:27 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= xv8zfW7Cre35JOZesm+apeptzfBIC/xE7UmrikMqnrs=; b=m8ITsgk+nQmkl5/P RpyTK/hzvSLFomwunMnLhJm2a8D4WrYFK30ssfw6T8+imOWRWWjjWFEmXlCAeS4q Uew8BzpA0AwpO3SmtM7nXi1Eh7ss5/qz4DD4oRTuX2KLAY7xYSavsT3BbPDSwZHC VXZu5Ekle+UWijhi2ZJwPUI999H+W5jX4a0SVrh5RsLx9P9gwIyucnLJMouSt8j+ VMvRu/rkmyz4/EHNkQ+0bF5KN2KUuQwtiqi4Jelx7slWzow3MVxYjO2VfNdZ/Y4H JIfHnoQ526KcW3wo3c98tGbA91nZDAXoa08pNt5X/jlsoWcPYfDtQxqazRyTPJyt uGbbvQ== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45d1u89pby-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sun, 16 Mar 2025 04:09:26 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-2ff8a2c7912so1320349a91.1 for ; Sat, 15 Mar 2025 21:09:26 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742098166; x=1742702966; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=xv8zfW7Cre35JOZesm+apeptzfBIC/xE7UmrikMqnrs=; b=v13B0PJLjtHvIaN2brToTKV+tjIMdBM0IP+zF8maxnS2ZVsoaTvINfjIi2pUDNpjLG 2QLuAhg5NB4mnEU7AN33aK3Os9j+44ZAu5HkXLaqP+10YniQvB48jZj2jf7IQAogAbgr Lin76X/wAKfTA/JL1PonQ4yqsA4GW5J9EjHKtSG3sNrC2e3c8Ax/iBUoyLX4NRcM8A1t 1anJwrk4Nb0F/7YBQ6/X3liKGBFDFqwupTPVWpYLmZ0AOVDPLeduOmrGnJWvErYtlsJ8 4ehQRiiGGtBVuB7Z/HKWcf50rY+UTbb/NrrsFWFcHy131BQPKN25KXQuZ9cqc1hviGqe pdWQ== X-Forwarded-Encrypted: i=1; AJvYcCUo2i7wcye8xa8rYmFLyQ93hYBhhaOkQ5p2gbx/kNGXgEbuiRaMjZ6XGyOfE5Wbir+lsccIPJ3F/9U=@vger.kernel.org X-Gm-Message-State: AOJu0Yy3xSvyldgQQndkcrmc3MhvIR1S/j1IqXcU4HmHV4urtB9ASchQ JyRShIqYVIQnjGIv5bodCOsH7Q7SfYR7HS6eCG+jTYybDHT26Tr5l6hVgXrC0QkP/VjmpMZ6AmR QcU3iVSXnVSKj5TY3EfcExdWqyL0fEiBcuI7qJHHgcnX3PGHVjjRo7+rITe0= X-Gm-Gg: ASbGncv2PAzEN9zgH2JKdlSXFJzZPSJuXABNYKIsgLI54QWDzSD4YlbtLImBRWRQwZc wZnvHJZTCiV6UUiI/cw5+7iuRy1YSXpy8CZDjJxntf9fMU14SPHBjl1mi2mmA7r7/OJbYYyznE6 4ZpgSptOg4W7dQkDCZLvi6eGQ+zEUc2yO3dybdUHgbROkxQyVBwXa+hsMduUJYX70jvQw7pn3h+ kkAgRFYhEimTeIU+46P2QcJIpp0i2ahVpj9+tGSNLmZFxwPfnoVFm7lGOz0jFJLlN88FFSJ7rsi 8ANTIttQs0e/MOO0Gqs87M/8OP2tFJFfpBq/UwIpKo0MS0ZB/9E= X-Received: by 2002:a17:90b:510a:b0:2ff:71d2:ee8f with SMTP id 98e67ed59e1d1-301521898famr10037126a91.13.1742098165662; Sat, 15 Mar 2025 21:09:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFCsyQGnpG/KNnJzpYYHHg0cCT+aZytNQyvAeXV6GvZpDMgTC5X+RQsIaPJNXCJm/kzj/KrDg== X-Received: by 2002:a17:90b:510a:b0:2ff:71d2:ee8f with SMTP id 98e67ed59e1d1-301521898famr10037108a91.13.1742098165287; Sat, 15 Mar 2025 21:09:25 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30153bc301esm3490438a91.49.2025.03.15.21.09.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Mar 2025 21:09:24 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sun, 16 Mar 2025 09:39:02 +0530 Subject: [PATCH v8 2/4] PCI: of: Add of_pci_get_equalization_presets() API Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250316-preset_v6-v8-2-0703a78cb355@oss.qualcomm.com> References: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> In-Reply-To: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Helgaas , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84?= =?utf-8?q?ski?= Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_mrana@quicinc.com, quic_vbadigan@quicinc.com, Krishna Chaitanya Chundru X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1742098148; l=4772; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=yWEF9FfgSMro3JM5NRtiJnP4N/6t+P4l+2CN6d00taU=; b=NGc/RmBhUgLQXkNdt0OR+6NVIFWUh318ktCccy0DjG5ZPKPXD57krkeoNHzu3+yll7nHuiNoE V9G0dKJJi1WBwrre/S8ORrKCyc9DtJ7rzuPX38C+O+RvwUYexJC38lA X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-GUID: 3O4rHGkIBN9rI54BTrBUbliqYsqw3DXo X-Authority-Analysis: v=2.4 cv=c42rQQ9l c=1 sm=1 tr=0 ts=67d64ef6 cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=C2froRUT8Woxtj4mbF0A:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-ORIG-GUID: 3O4rHGkIBN9rI54BTrBUbliqYsqw3DXo X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-16_01,2025-03-14_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 mlxscore=0 adultscore=0 malwarescore=0 impostorscore=0 mlxlogscore=999 priorityscore=1501 suspectscore=0 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503160029 PCIe equalization presets are predefined settings used to optimize signal integrity by compensating for signal loss and distortion in high-speed data transmission. As per PCIe spec 6.0.1 revision section 8.3.3.3 & 4.2.4 for data rates of 8.0 GT/s, 16.0 GT/s, 32.0 GT/s, and 64.0 GT/s, there is a way to configure lane equalization presets for each lane to enhance the PCIe link reliability. Each preset value represents a different combination of pre-shoot and de-emphasis values. For each data rate, different registers are defined: for 8.0 GT/s, registers are defined in section 7.7.3.4; for 16.0 GT/s, in section 7.7.5.9, etc. The 8.0 GT/s rate has an extra receiver preset hint, requiring 16 bits per lane, while the remaining data rates use 8 bits per lane. Based on the number of lanes and the supported data rate, of_pci_get_equalization_presets() reads the device tree property and stores in the presets structure. Signed-off-by: Krishna Chaitanya Chundru --- drivers/pci/of.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ drivers/pci/pci.h | 32 +++++++++++++++++++++++++++++++- 2 files changed, 75 insertions(+), 1 deletion(-) diff --git a/drivers/pci/of.c b/drivers/pci/of.c index 7a806f5c0d20..18691483e108 100644 --- a/drivers/pci/of.c +++ b/drivers/pci/of.c @@ -851,3 +851,47 @@ u32 of_pci_get_slot_power_limit(struct device_node *node, return slot_power_limit_mw; } EXPORT_SYMBOL_GPL(of_pci_get_slot_power_limit); + +/** + * of_pci_get_equalization_presets - Parses the "eq-presets-Ngts" property. + * + * @dev: Device containing the properties. + * @presets: Pointer to store the parsed data. + * @num_lanes: Maximum number of lanes supported. + * + * If the property is present, read and store the data in the @presets structure. + * Else, assign a default value of PCI_EQ_RESV. + * + * Return: 0 if the property is not available or successfully parsed else + * errno otherwise. + */ +int of_pci_get_equalization_presets(struct device *dev, + struct pci_eq_presets *presets, + int num_lanes) +{ + char name[20]; + int ret; + + presets->eq_presets_8gts[0] = PCI_EQ_RESV; + ret = of_property_read_u16_array(dev->of_node, "eq-presets-8gts", + presets->eq_presets_8gts, num_lanes); + if (ret && ret != -EINVAL) { + dev_err(dev, "Error reading eq-presets-8gts :%d\n", ret); + return ret; + } + + for (int i = 0; i < EQ_PRESET_TYPE_MAX - 1; i++) { + presets->eq_presets_Ngts[i][0] = PCI_EQ_RESV; + snprintf(name, sizeof(name), "eq-presets-%dgts", 8 << (i + 1)); + ret = of_property_read_u8_array(dev->of_node, name, + presets->eq_presets_Ngts[i], + num_lanes); + if (ret && ret != -EINVAL) { + dev_err(dev, "Error reading %s :%d\n", name, ret); + return ret; + } + } + + return 0; +} +EXPORT_SYMBOL_GPL(of_pci_get_equalization_presets); diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 01e51db8d285..78c9cc0ad8fa 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -9,6 +9,8 @@ struct pcie_tlp_log; /* Number of possible devfns: 0.0 to 1f.7 inclusive */ #define MAX_NR_DEVFNS 256 +#define MAX_NR_LANES 16 + #define PCI_FIND_CAP_TTL 48 #define PCI_VSEC_ID_INTEL_TBT 0x1234 /* Thunderbolt */ @@ -808,6 +810,21 @@ static inline u64 pci_rebar_size_to_bytes(int size) struct device_node; +#define PCI_EQ_RESV 0xff + +enum equalization_preset_type { + EQ_PRESET_TYPE_8GTS, + EQ_PRESET_TYPE_16GTS, + EQ_PRESET_TYPE_32GTS, + EQ_PRESET_TYPE_64GTS, + EQ_PRESET_TYPE_MAX +}; + +struct pci_eq_presets { + u16 eq_presets_8gts[MAX_NR_LANES]; + u8 eq_presets_Ngts[EQ_PRESET_TYPE_MAX - 1][MAX_NR_LANES]; +}; + #ifdef CONFIG_OF int of_get_pci_domain_nr(struct device_node *node); int of_pci_get_max_link_speed(struct device_node *node); @@ -822,7 +839,9 @@ void pci_release_bus_of_node(struct pci_bus *bus); int devm_of_pci_bridge_init(struct device *dev, struct pci_host_bridge *bridge); bool of_pci_supply_present(struct device_node *np); - +int of_pci_get_equalization_presets(struct device *dev, + struct pci_eq_presets *presets, + int num_lanes); #else static inline int of_get_pci_domain_nr(struct device_node *node) @@ -867,6 +886,17 @@ static inline bool of_pci_supply_present(struct device_node *np) { return false; } + +static inline int of_pci_get_equalization_presets(struct device *dev, + struct pci_eq_presets *presets, + int num_lanes) +{ + presets->eq_presets_8gts[0] = PCI_EQ_RESV; + for (int i = 0; i < EQ_PRESET_TYPE_MAX - 1; i++) + presets->eq_presets_Ngts[i][0] = PCI_EQ_RESV; + + return 0; +} #endif /* CONFIG_OF */ struct of_changeset; From patchwork Sun Mar 16 04:09:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krishna Chaitanya Chundru X-Patchwork-Id: 14018301 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3F6B8187342 for ; Sun, 16 Mar 2025 04:09:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098173; cv=none; b=AHHOby5/tz8cidiRb3HLfHiQzXKeBsJZpBxGHdkc3oMJ877NxfnZcP2cMloDChe5mWjCVApjUroRkprPbguJWNsFbnyidJFmydeFl8msZrgOQc3pPabgzEhaNnNq/pwpy+P8KQCcGjETJmOrhDNVUgpBQeGr4xSLuKPoO98XCDE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098173; c=relaxed/simple; bh=vAL22FsrdmpzZDSOTzsqtv09wm/NpEqSyY/He8Q3rWo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fJH4MU2NO+M5BK9MeR2h5GhrK2dHQ7LrNRHzO0Nf7a8jGsgd1Mm1o0Za0fsIs9xPGzQctH1uRKlqgyt5fNqOrKxBmal3OqJoSy/Fp/MIGBOYFFQiWLBe+rK56pvAgtJvXq2JadPpvtYSj5evCH8LFgW+r37Lz5HlQxg1DKKEe3M= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=dbwKHVkd; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="dbwKHVkd" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52G2klKh014173 for ; Sun, 16 Mar 2025 04:09:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= RTARSqVulqseS/hBvUMMQSRM65+7IsS9eYK8VLj5/5A=; b=dbwKHVkd39G0qWOg mHU31GZOBsWAahz5iu38SwXwZbcqo1Z78Hrv84I4h2P3JqxJXTAdoaQ+/yoETH6K zeE98bNpTCcz38NWPa74vRosdB6UirprkoETqZhpGfBhPAh7gDZIz1uY34ozJABw X5WS5WUtGNXEO0S4oIliMRY+Hpqs/XJt8uk7wktc2IyRojUgf5O8AX3V74Xgl2B9 vvmCPn82Zu07seFiyH9ANmte0xVzmxUGEkQcB6GNqijMIauitDocO6sybOuDQ1US fMCxr/vfdRNlH5dxBh4o8gaNW3jfiG3rME3NHGkvHhNx/NNE0/BCH7Xiv4j12ce+ qkSZ5w== Received: from mail-pj1-f71.google.com (mail-pj1-f71.google.com [209.85.216.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45d1s3snn9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sun, 16 Mar 2025 04:09:31 +0000 (GMT) Received: by mail-pj1-f71.google.com with SMTP id 98e67ed59e1d1-300fefb8e25so1342107a91.3 for ; Sat, 15 Mar 2025 21:09:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742098171; x=1742702971; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RTARSqVulqseS/hBvUMMQSRM65+7IsS9eYK8VLj5/5A=; b=BLumBsiYAKgOMfgFxLBk7d7YTv02QcNrnXIKkRqfUUvCOoZiKoyF66nSbo+dpP3n3L 4jx9naSVUOUpxdVKl09g/NfYXKk+9VQSmdWvAMnUufrmwqAMWPOGeBX1ab4dmvaO3BYT Z9/09lD4GyVS71n0ZL9DmxOfl962QnhTxNVUogc5WU7gJN1kkpLa8GhrLhZiVbxFciYe T3bNhpMrR8Wb2AoP14oYIZ78jEPM7l3+UDs7IorbRMMqDeKooK1nqLjsjiJROC/iCgjy k4PDbTBMkFffYXSTl2T2u5WOhMugOJArduM3K1VdiaCRIQ0QaDi74zWJ6k1mvOUgFH8F VTdw== X-Forwarded-Encrypted: i=1; AJvYcCX16FpPYPL7L8TxWmiZrVAmchih9ELo7nvwYcH716VQVpPkcdyA1CQ6J7mR2LxT0SfYyuAUGS637Ug=@vger.kernel.org X-Gm-Message-State: AOJu0YybL7Dk+GklTeOJ96ucCAK62W+8PPlK0zlD1KawJ107eN9wCI6u tjzmsILukKZ0qifDK6BuA5ywmenuIsdJuk617w+HK0ukd1GEbqwY2x7wK/hgACfD66I7Cwdvik4 KIv9SQaGpbKYoGSmX4tS7+PPdACNTwzU4EkTL/Z/n9eGNjX47lE0PsRS7hN4= X-Gm-Gg: ASbGnct0ZjqbAwUUIH2egZaLzXXCjk9o7eA8BrVWT3VJH/oAOcjRC45qztU2vjzHp4T d2zAUO4ajQzwVWescYLR949JUbj9jzpF93DXp3Ppo5kVf2tmJUXlA5K95IKuwdudxjJaIDsSKWm 2WKsAfEP+cKD+dmBf1XuNK95TJdPIANMmUstez/neqArB9GpS90Kc2XW/V2inGLtoaKUIfVwSG0 cPOwQSUwFAnKL+w8V4gaHpnfXvWatK9Pb0IiSSkGFJVxZhDhsG/QldV1xGHuyXxG1+S7bB4KsaY dOJbT/a28vOJQvBNdP5/g5XWAjRb4pKviju/PlBz1OPpe4MhPJk= X-Received: by 2002:a17:90b:5143:b0:2f7:4cce:ae37 with SMTP id 98e67ed59e1d1-30151d03d08mr11205591a91.18.1742098170731; Sat, 15 Mar 2025 21:09:30 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHz3+v7IiV5+3h8ypqZ8mTRGjTBVXic61hpA9zS0rNMDjVKafG9HFgpoWDDAv6/CojeGl1iPA== X-Received: by 2002:a17:90b:5143:b0:2f7:4cce:ae37 with SMTP id 98e67ed59e1d1-30151d03d08mr11205579a91.18.1742098170384; Sat, 15 Mar 2025 21:09:30 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30153bc301esm3490438a91.49.2025.03.15.21.09.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Mar 2025 21:09:29 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sun, 16 Mar 2025 09:39:03 +0530 Subject: [PATCH v8 3/4] PCI: dwc: Update pci->num_lanes to maximum supported link width Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250316-preset_v6-v8-3-0703a78cb355@oss.qualcomm.com> References: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> In-Reply-To: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Helgaas , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84?= =?utf-8?q?ski?= Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_mrana@quicinc.com, quic_vbadigan@quicinc.com, Krishna Chaitanya Chundru X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1742098148; l=2659; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=vAL22FsrdmpzZDSOTzsqtv09wm/NpEqSyY/He8Q3rWo=; b=XkTqW+wbQkb014bseIYknxzoA8wxSZeIvxT06zSlEzmJYkckrvlhzr1tfNL/Op9BMYpBdKf1b NqxGAKxg22JBFuqt3wPQWSTUx3sfCHlNXshA1lA5Qjzm6MSM5XfPt+e X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Authority-Analysis: v=2.4 cv=WbQMa1hX c=1 sm=1 tr=0 ts=67d64efb cx=c_pps a=UNFcQwm+pnOIJct1K4W+Mw==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=kXhGf0cxdCgfIYue-YsA:9 a=QEXdDO2ut3YA:10 a=uKXjsCUrEbL0IQVhDsJ9:22 X-Proofpoint-GUID: ZkoUM_b5di1z3dMAGUgJ4otCK0_EupIn X-Proofpoint-ORIG-GUID: ZkoUM_b5di1z3dMAGUgJ4otCK0_EupIn X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-16_01,2025-03-14_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 phishscore=0 adultscore=0 malwarescore=0 bulkscore=0 lowpriorityscore=0 mlxlogscore=999 spamscore=0 clxscore=1015 impostorscore=0 suspectscore=0 mlxscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503160029 If the num-lanes property is not present in the devicetree update the pci->num_lanes with the hardware supported maximum link width using the newly introduced dw_pcie_link_get_max_link_width() API. Introduce dw_pcie_link_get_max_link_width() to get the maximum lane width the hardware supports. Signed-off-by: Krishna Chaitanya Chundru --- drivers/pci/controller/dwc/pcie-designware-host.c | 3 +++ drivers/pci/controller/dwc/pcie-designware.c | 8 ++++++++ drivers/pci/controller/dwc/pcie-designware.h | 1 + 3 files changed, 12 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index ffaded8f2df7..dd56cc02f4ef 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -504,6 +504,9 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) dw_pcie_iatu_detect(pci); + if (pci->num_lanes < 1) + pci->num_lanes = dw_pcie_link_get_max_link_width(pci); + /* * Allocate the resource for MSG TLP before programming the iATU * outbound window in dw_pcie_setup_rc(). Since the allocation depends diff --git a/drivers/pci/controller/dwc/pcie-designware.c b/drivers/pci/controller/dwc/pcie-designware.c index 145e7f579072..f39e6f5732a9 100644 --- a/drivers/pci/controller/dwc/pcie-designware.c +++ b/drivers/pci/controller/dwc/pcie-designware.c @@ -737,6 +737,14 @@ static void dw_pcie_link_set_max_speed(struct dw_pcie *pci) } +int dw_pcie_link_get_max_link_width(struct dw_pcie *pci) +{ + u8 cap = dw_pcie_find_capability(pci, PCI_CAP_ID_EXP); + u32 lnkcap = dw_pcie_readl_dbi(pci, cap + PCI_EXP_LNKCAP); + + return FIELD_GET(PCI_EXP_LNKCAP_MLW, lnkcap); +} + static void dw_pcie_link_set_max_link_width(struct dw_pcie *pci, u32 num_lanes) { u32 lnkcap, lwsc, plc; diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 501d9ddfea16..61d1fb6b437b 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -488,6 +488,7 @@ void dw_pcie_write_dbi2(struct dw_pcie *pci, u32 reg, size_t size, u32 val); int dw_pcie_link_up(struct dw_pcie *pci); void dw_pcie_upconfig_setup(struct dw_pcie *pci); int dw_pcie_wait_for_link(struct dw_pcie *pci); +int dw_pcie_link_get_max_link_width(struct dw_pcie *pci); int dw_pcie_prog_outbound_atu(struct dw_pcie *pci, const struct dw_pcie_ob_atu_cfg *atu); int dw_pcie_prog_inbound_atu(struct dw_pcie *pci, int index, int type, From patchwork Sun Mar 16 04:09:04 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Krishna Chaitanya Chundru X-Patchwork-Id: 14018302 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6893918A6AB for ; Sun, 16 Mar 2025 04:09:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098179; cv=none; b=r5fGh6AJmaum1p+MKdNAvsY1y+JnDf3BQ1DnslJmZun1TfeaIUigQkI0gSYHq4UoPL5bLOYndyfdyG+V4iqtYlTTAXbaBhUTbUQLlXKN+wmWwEmeXijIvrrEAuwUaB6Ko0wubs+eI8wGRG6drZjLJ98945dcODIh5CIIuiELlmg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742098179; c=relaxed/simple; bh=Vf5WXRKSe8bkKwPkNi3tieP8dH4brW2HCDlfCESBKTw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=EH+ah9Z6fdctmMKRr4w02cNluNLsWEDHhBM1vo7Clcn+wjJ6ZwTQ8DHfCNXo9E+8eS+Xs0xb/bOfUfqF5FctCmfzbJuYmWpBRDrIcZU/kdhfHDfSc0CrWf5uyW1sEgBpruvHHxPuGI0BUUzbJIXS53VTyMlY0jVhKfTGFO5fDjQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=DikBVyZW; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="DikBVyZW" Received: from pps.filterd (m0279865.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 52G2LC02012399 for ; Sun, 16 Mar 2025 04:09:37 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= BjiWZ8phXn5GvIMbIVKOQIoK9S28Kpb6nyVGje6AKfo=; b=DikBVyZWMW1JTmPW Y3LG42KKoHRTZFNLdvOtDeTYtcnFL+CzNWFmTHe85yqOSpfczIy1bAwC+C5pjl21 tRay65ANrP17pEGiOHA0UP7RjEx1eHlEkd3LupeCDlOJpCq0cIhG58wYSzlbJp/5 i8tOdgF+cGnQFcFPPw0OCfBu3wChVsZexT5TccQIhRQfHsumO9lihiJ6GIDKjyH9 F6LurLxCbUKa/eL6Rqy0Ar9gwspZn6Mi+dug38jIwhhgnFzqrJGC0hC4OmF6Pmhe SMuPsbD1rgNNsiP6LvfJimRjVGbG4A7EmaYE95Zqq3XBxPOLnXNFyvBbhbNPepNd IWezTQ== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 45d1u89pce-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Sun, 16 Mar 2025 04:09:36 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-2ff6943febeso1209728a91.0 for ; Sat, 15 Mar 2025 21:09:36 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1742098176; x=1742702976; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BjiWZ8phXn5GvIMbIVKOQIoK9S28Kpb6nyVGje6AKfo=; b=h883qFLpTWb/ktqk7MYmeUcmqtVzzP0B35iTCcAV399Tglv5f3Pq2EpH13O3aJ6dw/ nIQXICbua4pr9MLEmP6/lznlnJueDabc9bqwYuv8k+nBr+leXzuieqKVzu+x8ShOJhGd wa7lzdRjhPPPILIVRzGjzDvEp6zxZfsZBQKL0FFk7IsjYr/Q0Wc4kls0wi5NCLdxaAZf uUDmseyhHQBia5sC1RJPoFv+egoEoOvsFqJw1xCiJGIE0Sb3KxhuRjjhSoYyUhA7HgvU hfCMgEAWxDUeuYvuJOSRVOL2x3+msQOL1ZSwyrHaJcMuNqaWRXwPUq79ZAJOztLPsPeu cdmA== X-Forwarded-Encrypted: i=1; AJvYcCW0t08Eyvz6shXJBQq/Mu4o7sZq7w077YKnaf6aAdQeL4lbCFumTBp+1NWpezYjOykAmEn5PlybkJ4=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5tkeBWI5DvmU93uxR6YZOvJDWjRwGvcRKMUAP3K8+iILjZIAU eRg2m25IqxskLc8ccKOPs2J/4SRyNkv4TsJWquigtitSVwONVpTRPhlWYM9FiD5egudM/8gNeA0 vnk9VZEhbCltSND6cPqwZBWcMpL0AE4j/UI34LhUVK8dafaeiU/uAthskNJY= X-Gm-Gg: ASbGncsQuo4sCJOO+mn/bl6rz+al7NGevRH9Y8dFfXG0oVrhGQnKz+SO8VLq4mekrpd 119yj6RoqU02urnKy+nOsYjgY5AMkX2EI2ObCKAzyfuRO97yPYIearJQFvlNpmoYUshopqxIwpz PleZFWkVGBG7VLgJX70aCXUR87kBmVTqOUK1Usf8OmazPvH+0LoS8/X08EexB7DnhCYUW6B1IOq nsrq/1Eelsk7xY96dKbOLtdFv1EOy+bGRnJTwtacAiZv+Q/1Tk7tRA3ojY1z+TYJ2ZwSvkRWb/Q jr542sGbTbLNXTcQiYunlScFmZJpP8mKIYLqywEbbpfurKdL7wI= X-Received: by 2002:a17:90b:568c:b0:2ff:556f:bf9 with SMTP id 98e67ed59e1d1-3015211e77emr9378166a91.4.1742098175790; Sat, 15 Mar 2025 21:09:35 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFpxdwyme8KoKtPhwKD++kCMtUzmx2P4sIFKMDkag5tMvi/6pF1x3XIwxkD7MXlNc1WKVwxFA== X-Received: by 2002:a17:90b:568c:b0:2ff:556f:bf9 with SMTP id 98e67ed59e1d1-3015211e77emr9378132a91.4.1742098175401; Sat, 15 Mar 2025 21:09:35 -0700 (PDT) Received: from hu-krichai-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-30153bc301esm3490438a91.49.2025.03.15.21.09.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Mar 2025 21:09:35 -0700 (PDT) From: Krishna Chaitanya Chundru Date: Sun, 16 Mar 2025 09:39:04 +0530 Subject: [PATCH v8 4/4] PCI: dwc: Add support for configuring lane equalization presets Precedence: bulk X-Mailing-List: linux-pci@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250316-preset_v6-v8-4-0703a78cb355@oss.qualcomm.com> References: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> In-Reply-To: <20250316-preset_v6-v8-0-0703a78cb355@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Bjorn Helgaas , Jingoo Han , Manivannan Sadhasivam , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy=C5=84?= =?utf-8?q?ski?= Cc: linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, quic_mrana@quicinc.com, quic_vbadigan@quicinc.com, Krishna Chaitanya Chundru X-Mailer: b4 0.14.1 X-Developer-Signature: v=1; a=ed25519-sha256; t=1742098148; l=4863; i=krishna.chundru@oss.qualcomm.com; s=20230907; h=from:subject:message-id; bh=Vf5WXRKSe8bkKwPkNi3tieP8dH4brW2HCDlfCESBKTw=; b=Pz7WkgxvMuX5UL9txYDwfTz6oJAxGk2zoimjpd2MBBSoIR/EyDHRJq7SRU3gBK0AOm8q0VU0J bNk4lP60Lz7AXg4zUwe5KESCPDyDzfhY4i3aJFx8iBYHQ7rKVoq9O1r X-Developer-Key: i=krishna.chundru@oss.qualcomm.com; a=ed25519; pk=10CL2pdAKFyzyOHbfSWHCD0X0my7CXxj8gJScmn1FAg= X-Proofpoint-GUID: ZADUi8BSwwLVAc3GbWjLg0-_qIfMbdt8 X-Authority-Analysis: v=2.4 cv=c42rQQ9l c=1 sm=1 tr=0 ts=67d64f00 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=Vs1iUdzkB0EA:10 a=EUspDBNiAAAA:8 a=S-wDCh2AgS0RhsWIeBgA:9 a=QEXdDO2ut3YA:10 a=yWgB78FVKKW44gG2z5Yz:22 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-ORIG-GUID: ZADUi8BSwwLVAc3GbWjLg0-_qIfMbdt8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1093,Hydra:6.0.680,FMLib:17.12.68.34 definitions=2025-03-16_01,2025-03-14_01,2024-11-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 spamscore=0 bulkscore=0 lowpriorityscore=0 mlxscore=0 adultscore=0 malwarescore=0 impostorscore=0 mlxlogscore=999 priorityscore=1501 suspectscore=0 clxscore=1015 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2502280000 definitions=main-2503160029 PCIe equalization presets are predefined settings used to optimize signal integrity by compensating for signal loss and distortion in high-speed data transmission. Based upon the number of lanes and the data rate supported, write the preset data read from the device tree in to the lane equalization control registers. Signed-off-by: Krishna Chaitanya Chundru --- drivers/pci/controller/dwc/pcie-designware-host.c | 60 +++++++++++++++++++++++ drivers/pci/controller/dwc/pcie-designware.h | 3 ++ include/uapi/linux/pci_regs.h | 3 ++ 3 files changed, 66 insertions(+) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index dd56cc02f4ef..7c6e6a74383b 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -507,6 +507,10 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp) if (pci->num_lanes < 1) pci->num_lanes = dw_pcie_link_get_max_link_width(pci); + ret = of_pci_get_equalization_presets(dev, &pp->presets, pci->num_lanes); + if (ret) + goto err_free_msi; + /* * Allocate the resource for MSG TLP before programming the iATU * outbound window in dw_pcie_setup_rc(). Since the allocation depends @@ -808,6 +812,61 @@ static int dw_pcie_iatu_setup(struct dw_pcie_rp *pp) return 0; } +static void dw_pcie_program_presets(struct dw_pcie_rp *pp, enum pci_bus_speed speed) +{ + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + u8 lane_eq_offset, lane_reg_size, cap_id; + u8 *presets; + u32 cap; + int i; + + if (speed == PCIE_SPEED_8_0GT) { + presets = (u8 *)pp->presets.eq_presets_8gts; + lane_eq_offset = PCI_SECPCI_LE_CTRL; + cap_id = PCI_EXT_CAP_ID_SECPCI; + /* For data rate of 8 GT/S each lane equalization control is 16bits wide*/ + lane_reg_size = 0x2; + } else if (speed == PCIE_SPEED_16_0GT) { + presets = pp->presets.eq_presets_Ngts[EQ_PRESET_TYPE_16GTS - 1]; + lane_eq_offset = PCI_PL_16GT_LE_CTRL; + cap_id = PCI_EXT_CAP_ID_PL_16GT; + lane_reg_size = 0x1; + } else { + return; + } + + if (presets[0] == PCI_EQ_RESV) + return; + + cap = dw_pcie_find_ext_capability(pci, cap_id); + if (!cap) + return; + + /* + * Write preset values to the registers byte-by-byte for the given + * number of lanes and register size. + */ + for (i = 0; i < pci->num_lanes * lane_reg_size; i++) + dw_pcie_writeb_dbi(pci, cap + lane_eq_offset + i, presets[i]); +} + +static void dw_pcie_config_presets(struct dw_pcie_rp *pp) +{ + struct dw_pcie *pci = to_dw_pcie_from_pp(pp); + enum pci_bus_speed speed = pcie_link_speed[pci->max_link_speed]; + + /* + * Lane equalization needs to be perfomed for all data rates + * the controller supports and for all supported lanes. + */ + + if (speed >= PCIE_SPEED_8_0GT) + dw_pcie_program_presets(pp, PCIE_SPEED_8_0GT); + + if (speed >= PCIE_SPEED_16_0GT) + dw_pcie_program_presets(pp, PCIE_SPEED_16_0GT); +} + int dw_pcie_setup_rc(struct dw_pcie_rp *pp) { struct dw_pcie *pci = to_dw_pcie_from_pp(pp); @@ -861,6 +920,7 @@ int dw_pcie_setup_rc(struct dw_pcie_rp *pp) PCI_COMMAND_MASTER | PCI_COMMAND_SERR; dw_pcie_writel_dbi(pci, PCI_COMMAND, val); + dw_pcie_config_presets(pp); /* * If the platform provides its own child bus config accesses, it means * the platform uses its own address translation component rather than diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h index 61d1fb6b437b..30ae8d3f4282 100644 --- a/drivers/pci/controller/dwc/pcie-designware.h +++ b/drivers/pci/controller/dwc/pcie-designware.h @@ -25,6 +25,8 @@ #include #include +#include "../../pci.h" + /* DWC PCIe IP-core versions (native support since v4.70a) */ #define DW_PCIE_VER_365A 0x3336352a #define DW_PCIE_VER_460A 0x3436302a @@ -381,6 +383,7 @@ struct dw_pcie_rp { int msg_atu_index; struct resource *msg_res; bool use_linkup_irq; + struct pci_eq_presets presets; }; struct dw_pcie_ep_ops { diff --git a/include/uapi/linux/pci_regs.h b/include/uapi/linux/pci_regs.h index 3445c4970e4d..2cd20170adb4 100644 --- a/include/uapi/linux/pci_regs.h +++ b/include/uapi/linux/pci_regs.h @@ -1140,6 +1140,9 @@ #define PCI_DLF_CAP 0x04 /* Capabilities Register */ #define PCI_DLF_EXCHANGE_ENABLE 0x80000000 /* Data Link Feature Exchange Enable */ +/* Secondary PCIe Capability 8.0 GT/s */ +#define PCI_SECPCI_LE_CTRL 0x0c /* Lane Equalization Control Register */ + /* Physical Layer 16.0 GT/s */ #define PCI_PL_16GT_LE_CTRL 0x20 /* Lane Equalization Control Register */ #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F