From nobody Wed Apr 15 16:26:46 2026 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 40ECD390C8D for ; Wed, 4 Mar 2026 08:22:03 +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=1772612524; cv=none; b=tnuliJRuAUvjeK6lmPh8Zosxi2lCjdx+4tf2RFQ9TUiKh9Atscupn9QEXKe7/K6jg+xQ1QGL2sryT5WetBfcYUuVFeZaSvFXTt1Dcgqm0AVdvEGwRxScHviky7zTEY8fZ4xMoAZMWl0xzSSz8dZWl3Gg3qcraRSemTbeCsEPHnU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772612524; c=relaxed/simple; bh=TOJeoLyEULlLUcZyd/qHv13GrkbC4Opk/Xs63rbYStE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=SrR+6vhQwuoFS3VEfjsLyXhijlNGx5f3Q/+EP4NvkN1QtbrbKavGBIqYuoKvjSKA5yl9mM3j39xBpbTu0JhQhf23mmnlpnMSq/9rGD0ggm+CCi5SrzYlm9uqoB7kl+Hlex1rzHEv0YB7GseLfXiZQoFd8esPQp08c/1vh6GPNuw= 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=ErdiykL4; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GxxY2Hqz; 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="ErdiykL4"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GxxY2Hqz" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6245SQts3110371 for ; Wed, 4 Mar 2026 08:22:02 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= ug0lLGxsC4j9zZT1+Qpz0yt1KnVliXZuBM8pMhTDanU=; b=ErdiykL4mU2NtiA+ Iui2Yk11djdfLYj2hdi+ujZjfAYASQvTJlbknO9dr8v8mjtmv36FsbJBUSGgU+9Q rq0y+NSKwD8504L15QjezBau0tY//CxOISLoa0lpL1O/aew+pJjnf6Z6btdE4DYV 4OYB0DVhqlOMFJRIgcoIpU28DsfqcQ3x9KFoOUH5XDRkYFTMiTmILFUdsbeGjR5Q JxAtxSRQ7Fs2w198hDq+m0rf5hTUh0nHec4kUH5y2yCYGalZIDVR8gDPUbmYAkLy svhSEoHGlgj8GmyoUFbYU4Wiw/D4sCyCFY3qk9v2oco5hA+0ve5HYofUNPQc/ZSn ntPImA== Received: from mail-ot1-f72.google.com (mail-ot1-f72.google.com [209.85.210.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cp5h2abgd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 04 Mar 2026 08:22:02 +0000 (GMT) Received: by mail-ot1-f72.google.com with SMTP id 46e09a7af769-7d4cb5810a0so45641996a34.1 for ; Wed, 04 Mar 2026 00:22:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1772612522; x=1773217322; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=ug0lLGxsC4j9zZT1+Qpz0yt1KnVliXZuBM8pMhTDanU=; b=GxxY2HqzNVSVHX0DAwkMln2sVqG5DwnAZwKQR0ribN9UTbxNVRjQKNQyLXZmcZQ/jO DwAprd/MqwnLlnSaJZi+yAW7imD43w76jok8DAnN9AFx+eDEL1OQxeqDoqW1wCUONe+s GXZbmDH8brleF8w6b2C7+vhpllC4zgujXnKQXmPpfqRENfeCUb9ii08hO6fdVCxw+ZCa qg/hFck8eaP6JHg67rldIKLhKyuwgKPfaUnxwrBM92z2O0zibdf6oYo3uZf2cO9wvX6A Ez7+QkMd5Nj4FgqN3i6/zkvLwONOiVcUr81SzrfD2VC4jO/n36cTfAf7FojxZ0Ldv95Z iang== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772612522; x=1773217322; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ug0lLGxsC4j9zZT1+Qpz0yt1KnVliXZuBM8pMhTDanU=; b=ucSj0DWTLiIG/HmUNEZvsZYJs2b95p3TxnJDOcKoWYOE4WTDmm6yv6GOds9tji7sK6 HD2N/lz/0hMBVyTL/bq36r/Z/nd8FBgqxPSpULh5qkmTTwOPHLwHt3ixOCd3FZFdje5L pCIExdAKATROHIMXjtpyrHUkYErDiLW7iW+2+KfM5r1PWzudICMugqt5KV7X7xk8ZuOq h4KiKT82X8AraK35aLDYImboLVln3XBp/gbb/PtdqaRFuonOYdF2LMC+bEBfvytrCUKX 6A4bzFxicXnF/7vY5l0CvssPUgphn69mAzmoVz3R3Jov7JzVb1SsFIxDbCNV1iIS44s9 pAGg== X-Forwarded-Encrypted: i=1; AJvYcCWH4aceA9WR3vD/u2CTVfGT5HVXAQPlZwU6g2ZriDhphgTW0zMeHQvHkSlHWZdxlCyvSKEPG4jegBXttUI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz/ojW90Bk8nZiTdkJeHIf3j5t/C2QaCBgnupW/yU+ZJfLUxzA4 iUUMvRyKPiVWchgKXFkiyqUe//cxNG/46zSum7D9tZ/La8LHLtUiXguhmZQ93QOb7Due2a/z+KN FLAcPtkePV+J2tgMMCvdDRIXvPS2bxmTVVbYirWYyVz/yyNYRm9yMSZJKxdrqMfGRX5Y= X-Gm-Gg: ATEYQzw5s5iQ7lwspHK0S6qgQf598/vYDyPXI3N9jpnf9F++Cz9jD4+GIY30k7NtE3x iHdmtQusYBLgFAtlKchvZUqPNNW6rAqds4eqSSeTCIbgEGzpwLWm5o8EVw4jtW3LKu3OcEGFIRl ZXr7AeXX/DvKrKqUXD0mJld7qQ1QX04BUl7NeDr52b6rD/REE55moQX9DqtE05dtTY00Qh8AMD5 tUaNh3IAlxFMO4/uNcF27QhtUagIyfEFLoM3u2LSk0ErKOnrnZKSmzhKOkqE9STxcOQ1Hrm3ge7 oidN6OpM9uDsIhTl8aBGW6vIT674efSK0kAX5xLr0/uH6WqUT+NP2sfVLrAuAfYHZ5oNkG7g7mx LJTvpjqKZrwq88Ao1MLAJxNVV5ooJDFQ/XsMtqFHCa4Lzil7lgQb5KWq+jlrT7sCWdrSo X-Received: by 2002:a05:6830:6ad4:b0:7cf:da7d:608d with SMTP id 46e09a7af769-7d6c7f625e9mr783548a34.8.1772612521637; Wed, 04 Mar 2026 00:22:01 -0800 (PST) X-Received: by 2002:a05:6830:6ad4:b0:7cf:da7d:608d with SMTP id 46e09a7af769-7d6c7f625e9mr783529a34.8.1772612521276; Wed, 04 Mar 2026 00:22:01 -0800 (PST) Received: from hu-qianyu-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-4160d26d9absm18006952fac.16.2026.03.04.00.22.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 00:22:00 -0800 (PST) From: Qiang Yu Date: Wed, 04 Mar 2026 00:21:57 -0800 Subject: [PATCH 3/5] phy: qcom: qmp-pcie: Support multiple nocsr resets Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260304-glymur_gen5x8_phy-v1-3-849e9a72e125@oss.qualcomm.com> References: <20260304-glymur_gen5x8_phy-v1-0-849e9a72e125@oss.qualcomm.com> In-Reply-To: <20260304-glymur_gen5x8_phy-v1-0-849e9a72e125@oss.qualcomm.com> To: Vinod Koul , Neil Armstrong , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Philipp Zabel , Bjorn Andersson , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-phy@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, Qiang Yu X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1772612517; l=10138; i=qiang.yu@oss.qualcomm.com; s=20250513; h=from:subject:message-id; bh=TOJeoLyEULlLUcZyd/qHv13GrkbC4Opk/Xs63rbYStE=; b=7AnUEgbdH2HytltYugCWpXo08VNIVAONHAhXkdXgEbcT/wXxxp6r5Y0e+iF2alNDKocLUFK+/ tLU7yNrjzN8BYadB4xwVFCp9ZlvEIKC7S7TGAS1ZXPp7YFBfetZ+yAd X-Developer-Key: i=qiang.yu@oss.qualcomm.com; a=ed25519; pk=Rr94t+fykoieF1ngg/bXxEfr5KoQxeXPtYxM8fBQTAI= X-Authority-Analysis: v=2.4 cv=JqL8bc4C c=1 sm=1 tr=0 ts=69a7ebaa cx=c_pps a=+3WqYijBVYhDct2f5Fivkw==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_K5XuSEh1TEqbUxoQ0s3:22 a=EUspDBNiAAAA:8 a=wBkCwaD4edhj46uzH8YA:9 a=QEXdDO2ut3YA:10 a=eYe2g0i6gJ5uXG_o6N4q:22 X-Proofpoint-ORIG-GUID: FEYFVug1ql_lmWqVAoyXPYPmj8d0doqG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzA0MDA2NCBTYWx0ZWRfX9+UlTRP/0atH M7z0ANRBZ0c0NJS43Z4L+zQWELeEe/st8cDNPkyptCeYI1p3kuzn18crW0S2E1YkrAAuQH9D5xH soXRJ+A5SaUp6gpwY+Hhox66P0g+NHvGHMfGw3SX9mEkV63U1UJ2L0oVsSCwcAhbV3jZy/BBJ0O HbEslH8SlGpFTF695/Pp+EwVoLd5dpyAU2k3iblyxQA23tNlHJcmbOFGqBiRVar9rooxk1ovr9C WI8nDIA9JxsRnhBkD3DQW6YzCxqGoTnK3ow/oFXsLuoaJo2JCUyMDiBHqcgLucil3yb14o4Vw7A L/wylZP9VpM1bLs/X11Ite/PZOyTEanfy7u2ToA63sq5ya98gtC64cEvFr6TcBOcnS87UViITI2 tuADSj20Di0HdzHXmy7TtaTyitJnm+apGMIdH2EF3BXcYdzVyrG/p7OxIRQKHwlWsCa4KQZD6nk jwh/ZenibnEg0pXLwww== X-Proofpoint-GUID: FEYFVug1ql_lmWqVAoyXPYPmj8d0doqG X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-04_04,2026-03-03_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 adultscore=0 priorityscore=1501 lowpriorityscore=0 clxscore=1015 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2602130000 definitions=main-2603040064 Refactor nocsr reset handling to support multiple nocsr resets required for PHY configurations with bifurcated operation modes. The Glymur SoC's 3rd PCIe instance supports 8-lane mode using two PHYs in bifurcation, where each PHY requires its own nocsr reset to be controlled simultaneously. The current implementation only supports a single nocsr reset per PHY configuration. Add num_nocsr and nocsr_list fields to struct qmp_phy_cfg to represent the number and names of a group of nocsr reset names. Initialize these fields for all PHYs that have nocsr resets, allowing the driver to correctly acquire multiple nocsr resets during probe and control them as an array by using reset_control_bulk APIs. The refactoring maintains backward compatibility for existing single nocsr reset configurations while enabling support for multi-PHY scenarios like Glymur's 8-lane bifurcation mode. Additionally, introduces x1e80100_qmp_gen3x2_pciephy_cfg as a separate configuration from sm8550_qmp_gen3x2_pciephy_cfg since the x1e80100 Gen3x2 PHY requires nocsr reset support while the sm8550 Gen3x2 PHY does not. Signed-off-by: Qiang Yu --- drivers/phy/qualcomm/phy-qcom-qmp-pcie.c | 87 ++++++++++++++++++++++++++++= ---- 1 file changed, 77 insertions(+), 10 deletions(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c b/drivers/phy/qualcom= m/phy-qcom-qmp-pcie.c index 7369c291be51aa1ad7a330459dcb857f5a1988f6..6b6c10218229b74540e520c6fe9= fd1f890480b68 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-pcie.c @@ -3281,6 +3281,11 @@ struct qmp_phy_cfg { /* resets to be requested */ const char * const *reset_list; int num_resets; + + /* nocsr resets to be requested */ + const char * const *nocsr_reset_list; + int num_nocsr_resets; + /* regulators to be requested */ const char * const *vreg_list; int num_vregs; @@ -3327,7 +3332,7 @@ struct qmp_pcie { int num_pipe_clks; =20 struct reset_control_bulk_data *resets; - struct reset_control *nocsr_reset; + struct reset_control_bulk_data *nocsr_reset; struct regulator_bulk_data *vregs; =20 struct phy *phy; @@ -3394,6 +3399,10 @@ static const char * const sdm845_pciephy_reset_l[] = =3D { "phy", }; =20 +static const char * const sm8550_pciephy_nocsr_reset_l[] =3D { + "phy_nocsr", +}; + static const struct qmp_pcie_offsets qmp_pcie_offsets_qhp =3D { .serdes =3D 0, .pcs =3D 0x1800, @@ -4350,6 +4359,8 @@ static const struct qmp_phy_cfg sm8550_qmp_gen4x2_pci= ephy_cfg =3D { }, .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D sm8550_qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(sm8550_qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4382,6 +4393,8 @@ static const struct qmp_phy_cfg sm8650_qmp_gen4x2_pci= ephy_cfg =3D { }, .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D sm8550_qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(sm8550_qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4482,6 +4495,35 @@ static const struct qmp_phy_cfg sa8775p_qmp_gen4x4_p= ciephy_cfg =3D { .phy_status =3D PHYSTATUS_4_20, }; =20 +static const struct qmp_phy_cfg x1e80100_qmp_gen3x2_pciephy_cfg =3D { + .lanes =3D 2, + + .offsets =3D &qmp_pcie_offsets_v5, + + .tbls =3D { + .serdes =3D sm8550_qmp_gen3x2_pcie_serdes_tbl, + .serdes_num =3D ARRAY_SIZE(sm8550_qmp_gen3x2_pcie_serdes_tbl), + .tx =3D sm8550_qmp_gen3x2_pcie_tx_tbl, + .tx_num =3D ARRAY_SIZE(sm8550_qmp_gen3x2_pcie_tx_tbl), + .rx =3D sm8550_qmp_gen3x2_pcie_rx_tbl, + .rx_num =3D ARRAY_SIZE(sm8550_qmp_gen3x2_pcie_rx_tbl), + .pcs =3D sm8550_qmp_gen3x2_pcie_pcs_tbl, + .pcs_num =3D ARRAY_SIZE(sm8550_qmp_gen3x2_pcie_pcs_tbl), + .pcs_misc =3D sm8550_qmp_gen3x2_pcie_pcs_misc_tbl, + .pcs_misc_num =3D ARRAY_SIZE(sm8550_qmp_gen3x2_pcie_pcs_misc_tbl), + }, + .reset_list =3D sdm845_pciephy_reset_l, + .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), + .vreg_list =3D qmp_phy_vreg_l, + .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), + .regs =3D pciephy_v5_regs_layout, + + .pwrdn_ctrl =3D SW_PWRDN | REFCLK_DRV_DSBL, + .phy_status =3D PHYSTATUS, +}; + static const struct qmp_phy_cfg x1e80100_qmp_gen4x2_pciephy_cfg =3D { .lanes =3D 2, =20 @@ -4504,6 +4546,8 @@ static const struct qmp_phy_cfg x1e80100_qmp_gen4x2_p= ciephy_cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4537,6 +4581,8 @@ static const struct qmp_phy_cfg x1e80100_qmp_gen4x4_p= ciephy_cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4568,6 +4614,8 @@ static const struct qmp_phy_cfg x1e80100_qmp_gen4x8_p= ciephy_cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4583,6 +4631,8 @@ static const struct qmp_phy_cfg qmp_v6_gen4x4_pciephy= _cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), .regs =3D pciephy_v6_regs_layout, @@ -4611,6 +4661,8 @@ static const struct qmp_phy_cfg qmp_v8_gen3x2_pciephy= _cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), .regs =3D pciephy_v8_regs_layout, @@ -4626,6 +4678,8 @@ static const struct qmp_phy_cfg glymur_qmp_gen5x4_pci= ephy_cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), =20 @@ -4642,6 +4696,8 @@ static const struct qmp_phy_cfg glymur_qmp_gen4x2_pci= ephy_cfg =3D { =20 .reset_list =3D sdm845_pciephy_reset_l, .num_resets =3D ARRAY_SIZE(sdm845_pciephy_reset_l), + .nocsr_reset_list =3D sm8550_pciephy_nocsr_reset_l, + .num_nocsr_resets =3D ARRAY_SIZE(sm8550_pciephy_nocsr_reset_l), .vreg_list =3D qmp_phy_vreg_l, .num_vregs =3D ARRAY_SIZE(qmp_phy_vreg_l), =20 @@ -4770,7 +4826,7 @@ static int qmp_pcie_init(struct phy *phy) } } =20 - ret =3D reset_control_assert(qmp->nocsr_reset); + ret =3D reset_control_bulk_assert(cfg->num_nocsr_resets, qmp->nocsr_reset= ); if (ret) { dev_err(qmp->dev, "no-csr reset assert failed\n"); goto err_assert_reset; @@ -4807,7 +4863,7 @@ static int qmp_pcie_exit(struct phy *phy) const struct qmp_phy_cfg *cfg =3D qmp->cfg; =20 if (qmp->nocsr_reset) - reset_control_assert(qmp->nocsr_reset); + reset_control_bulk_assert(cfg->num_nocsr_resets, qmp->nocsr_reset); else reset_control_bulk_assert(cfg->num_resets, qmp->resets); =20 @@ -4851,7 +4907,7 @@ static int qmp_pcie_power_on(struct phy *phy) if (ret) return ret; =20 - ret =3D reset_control_deassert(qmp->nocsr_reset); + ret =3D reset_control_bulk_deassert(cfg->num_nocsr_resets, qmp->nocsr_res= et); if (ret) { dev_err(qmp->dev, "no-csr reset deassert failed\n"); goto err_disable_pipe_clk; @@ -5000,14 +5056,25 @@ static int qmp_pcie_reset_init(struct qmp_pcie *qmp) for (i =3D 0; i < cfg->num_resets; i++) qmp->resets[i].id =3D cfg->reset_list[i]; =20 - ret =3D devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, qmp->= resets); + ret =3D devm_reset_control_bulk_get_exclusive(dev, cfg->num_resets, + qmp->resets); if (ret) return dev_err_probe(dev, ret, "failed to get resets\n"); =20 - qmp->nocsr_reset =3D devm_reset_control_get_optional_exclusive(dev, "phy_= nocsr"); - if (IS_ERR(qmp->nocsr_reset)) - return dev_err_probe(dev, PTR_ERR(qmp->nocsr_reset), - "failed to get no-csr reset\n"); + if (!cfg->num_nocsr_resets) + return 0; + qmp->nocsr_reset =3D devm_kcalloc(dev, cfg->num_nocsr_resets, + sizeof(*qmp->nocsr_reset), GFP_KERNEL); + if (!qmp->nocsr_reset) + return -ENOMEM; + + for (i =3D 0; i < cfg->num_nocsr_resets; i++) + qmp->nocsr_reset[i].id =3D cfg->nocsr_reset_list[i]; + + ret =3D devm_reset_control_bulk_get_exclusive(dev, cfg->num_nocsr_resets, + qmp->nocsr_reset); + if (ret) + return dev_err_probe(dev, ret, "failed to get no-csr reset\n"); =20 return 0; } @@ -5521,7 +5588,7 @@ static const struct of_device_id qmp_pcie_of_match_ta= ble[] =3D { .data =3D &sm8750_qmp_gen3x2_pciephy_cfg, }, { .compatible =3D "qcom,x1e80100-qmp-gen3x2-pcie-phy", - .data =3D &sm8550_qmp_gen3x2_pciephy_cfg, + .data =3D &x1e80100_qmp_gen3x2_pciephy_cfg, }, { .compatible =3D "qcom,x1e80100-qmp-gen4x2-pcie-phy", .data =3D &x1e80100_qmp_gen4x2_pciephy_cfg, --=20 2.34.1