From nobody Wed Oct 22 08:52:33 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 66FCA28640F for ; Tue, 21 Oct 2025 21:09:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080948; cv=none; b=qQGkb+r9U5nL6kAu7iF0VKA5H6F+iYX73xjFoc4WdNv7OZJpj8SgHTlIsND+C7n+p8YbV/n/vKv4wGF853s3dc68UxWqw4bWWGzcBxtiClrF+LQn0ogcL8zZmpRu9PGbopSxZkDVf6eTDMaI8EOVSr3e4ldzekPjgeNZH7TPlPQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080948; c=relaxed/simple; bh=C+tkM31LHQwx5rXjve3N0QzxSt8/3cY/SYv5ANIxZgY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MYp/cfqB2o4A9QZ4oZl+cgW4WJ6yD5zxvsq6oeJ9P84gItsSN6qZsW568+VIO2GCYnD/4N1vHryHlaaEx39SrFxIUiC/aDNcwgBX86ExsmTlXKib+bWlL6W3YCnrML/amjQ2Fn1z8fV75Us5xOsMHjQUb5jG67sqGmhh2pAdG1g= 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=KrxcpZug; arc=none smtp.client-ip=205.220.180.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="KrxcpZug" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59LFI5a3025477 for ; Tue, 21 Oct 2025 21:09:05 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= Zuiw9MxlaUMJ5WPI1xlT09kBhpRPx+9WZaClKq2hKfk=; b=KrxcpZugMDpMegok 4Iwsqxufok5+UZXmDUfu9tjJoaxPqRsB30DWVDygw2nQ1wCuva3j32h4MIZzRA1o MFGAVXpTtIBFMAPzW1DS4kRv/1DUwuWMdZY1Rqos87s91QMDwZq58nTh1pf7LMEA 5Krt9S/ev6ATgBbXz1luBS5zPW05dmcLON531OivWiJD2RXEOHUhac4GdI9ZqVhY 4UDUYLW+/j0r+s/8Ut876cWa/eeZlTKKOwdmtZblY9VoEMBjD4SExNZJqDSHQ1/9 6n6DkcbIgCh89XRQI7Ui+48iVZE0ObPIkdros13V2YhmBXXkPd0bjsqd5i9TbJVx 7hEMFg== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49v1w829kg-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 21 Oct 2025 21:09:04 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-33bcb779733so5256070a91.3 for ; Tue, 21 Oct 2025 14:09:04 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761080944; x=1761685744; 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=Zuiw9MxlaUMJ5WPI1xlT09kBhpRPx+9WZaClKq2hKfk=; b=dBE+JvshanPFeIS9AceeOZmzA6oaRGj5A7KF/fcw2BaTTOe0isbhF+59x+EJk7Eu7v xDyHMeNAA0p9X4n1JeFrPvKOf8w9miM04fohF1ZvBxYKoDb0S4YNZZDlONkYdDY4CzYW YFwHst1Bl3i9UNAq2qSeA9Af1iUbd58MJj4diw9C8WTAuSzrR2+RTfvyuNHVGRrUt6cl dwO9dWYgYiU6XhrQ5SHGd8DdOtTYiJWfOu2fwp7zxHNmGZIyBWLA2r8miMqHF/Qz1TB3 A/xFTSaqyn81eCuugMXAvCYSG6NrdFPLGCr/Ud/nTd/34diizL7ED+0zgRZ2Mt3Ns/as PzHQ== X-Forwarded-Encrypted: i=1; AJvYcCWq5/TTdkBnpl0LrdKPbqp4b2dkKXKeFCucfN4X42YmZozfCY1974JO4Z2BDVuPRVEnWD5NLq5UYfHs72s=@vger.kernel.org X-Gm-Message-State: AOJu0Ywc1cT2A+GrnfVVwZCQY7dWKVXiau4dCFzfeY6UmPvrEIfR0OcS 4sOdV9CfUoT0U0JVoS8p3VKi/J/CO6Ik6sN9S/xoiCTEPd58O3/CDzRgkbXU5hmljhwVOLmtAk8 CvR5AZ/K1hqac/4M9UWO0wXyqY19Jr7lTRgapsWP26MjZgkGoxf3mt9P5emLtEOydrAk= X-Gm-Gg: ASbGncui7TjU81BRUfUBRwnDQQqFPEPsqeOUw+LImhkkJ/FeQ4OFiU/aOKxWyC78hba RZUWZd6E7wkYc/BmgKnZS8U9bAo/qmpM+p42nJsDyFWfqh7xIMKdmHk3pDOSrI4VQ6PqDbYT2qW at1tSngp1G4G+HHVKvIMbxSzuFWDB/d6CKcVFwyoYrBema03Y+ZZgsgzmmBQ87iVaqsqqvwKShL lea6G9BNGk0IwtiS8bLJgL2oeK+nqSoKrzIiyQm+71xyElNMWCDDsO07SaCTEMbjhio1R+F1Q1A e+Yd33RcirYdLxWA12uiSGuGm4ylYVzbduLxWt4exT1n2yBQwfWwcCHslKKK97XVoOaaRdEwdzo N9a3E4FUfV7TmWowaRANGobSzBMi7edVBA/1imKIPkops5WdbuHKu6fA3c/p2 X-Received: by 2002:a17:90b:2b86:b0:33b:a0c7:9ea9 with SMTP id 98e67ed59e1d1-33bcf85aabemr20406694a91.3.1761080943634; Tue, 21 Oct 2025 14:09:03 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEfu+Esq266nfpDemo/Hu7oDDiP+Bc4u7LvOrdIaLaWlmGz5cns41MqdH0lKo4PH/hKAHJgDw== X-Received: by 2002:a17:90b:2b86:b0:33b:a0c7:9ea9 with SMTP id 98e67ed59e1d1-33bcf85aabemr20406665a91.3.1761080943132; Tue, 21 Oct 2025 14:09:03 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-33e223c813fsm489833a91.4.2025.10.21.14.09.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 14:09:02 -0700 (PDT) From: Kamal Wadhwa Date: Wed, 22 Oct 2025 02:38:53 +0530 Subject: [PATCH v2 1/4] regulator: rpmh-regulator: Fix PMIC5 BOB bypass mode handling 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: <20251022-add-rpmh-read-support-v2-1-5c7a8e4df601@oss.qualcomm.com> References: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> In-Reply-To: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761080935; l=2890; i=kamal.wadhwa@oss.qualcomm.com; s=20241018; h=from:subject:message-id; bh=C+tkM31LHQwx5rXjve3N0QzxSt8/3cY/SYv5ANIxZgY=; b=mGIOOy398WUZlhh3Y3+Rd3MKy5gP2BRCgnMs54Xx2ZX/rRoVp1BZz8zw7wcE0P5lGyRQ1GXDb WsNPd3Ms12vBXK+EfqcKJCeK0Qgooi6kZ1qo6I0twUejbom4oRCZ9r+ X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=XbPE6DM5/mJi2tsiYwMCJCZ4O5XPMqColJRlGVcM7Hs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAxNSBTYWx0ZWRfX86OM9X03hs88 ipZq1JGp+8OX58lzeKJGsiUw41RdCBzGi2y6uL83t2H6LJDgTpIjOEj+LdwgxhL55XmHNZiaGPP 9y3LY6uCMA0zRI+HcHHEZj4vs4jHO2evLtL+Iyt0H7N4ha3ZRAmlqs98kszpraUpZd742pjlbD6 cVEeXhODAV+wnkC1PVO8fHlixMFnUhdCMtCiETGhJO1zohNtrqjml9E2NPXhdTMJV7vH1M/lVva VwUMWje4gsJzmiEvPiFYyWc6sfmhcvrEcnI9XwgDmzzMYbII3aF+mCXuTENHKoiraTptLT5HScz EjTXr9fWzAF1vrkXLasahrOUfW/i4ta8GYKmcjnrSGVGB+FAvH7why2BMDY2inLq6n43/QcfEwq iBikwMC1anzR9uvEo8OplGQIDNK1Ng== X-Authority-Analysis: v=2.4 cv=bNUb4f+Z c=1 sm=1 tr=0 ts=68f7f670 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=l6s6GTuuRFQeQcd2MEMA:9 a=QEXdDO2ut3YA:10 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-GUID: TQBGf7TzERXyhc1UmgiujnbQGXHGAfAY X-Proofpoint-ORIG-GUID: TQBGf7TzERXyhc1UmgiujnbQGXHGAfAY X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-21_03,2025-10-13_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 adultscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180015 Currently, when `rpmh_regulator_set_mode_bypass()` helper function is called to set bypass mode, it sends PMIC4's BOB bypass mode value for even if its a PMIC5 BOB. To fix this, introduce new hw_data parameters: - `bypass_supported` to check if bypass is supported. - `pmic_bypass_mode` to store bypass mode value. Use these 2 parameters to send correct PMIC bypass mode that corresponds to PMIC4/5 BOB regulators from the helper function. Signed-off-by: Kamal Wadhwa --- drivers/regulator/qcom-rpmh-regulator.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 0a561f1d94523bf479f48e8c2062f79cf64f5b5f..947fb5241233c92eaeda974b1b6= 4d227d5946a59 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -111,6 +111,9 @@ static const struct resource_name_formats vreg_rsc_name= _lookup[NUM_REGULATOR_TYP * @hpm_min_load_uA: Minimum load current in microamps that requires * high power mode (HPM) operation. This is used * for LDO hardware type regulators only. + * @pmic_bypass_mode: The PMIC bypass mode value. This is only + * used if bypass_supported =3D=3D true. + * @bypass_supported: Indicates if bypass mode is supported * @pmic_mode_map: Array indexed by regulator framework mode * containing PMIC hardware modes. Must be large * enough to index all framework modes supported @@ -125,6 +128,8 @@ struct rpmh_vreg_hw_data { int n_linear_ranges; int n_voltages; int hpm_min_load_uA; + int pmic_bypass_mode; + bool bypass_supported; const int *pmic_mode_map; unsigned int (*of_map_mode)(unsigned int mode); }; @@ -310,10 +315,13 @@ static int rpmh_regulator_vrm_set_mode_bypass(struct = rpmh_vreg *vreg, if (pmic_mode < 0) return pmic_mode; =20 - if (bypassed) - cmd.data =3D PMIC4_BOB_MODE_PASS; - else + if (bypassed) { + if(!vreg->hw_data->bypass_supported) + return -EINVAL; + cmd.data =3D vreg->hw_data->pmic_bypass_mode; + } else { cmd.data =3D pmic_mode; + } =20 return rpmh_regulator_send_request(vreg, &cmd, true); } @@ -767,6 +775,8 @@ static const struct rpmh_vreg_hw_data pmic4_bob =3D { }, .n_linear_ranges =3D 1, .n_voltages =3D 84, + .bypass_supported =3D true, + .pmic_bypass_mode =3D PMIC4_BOB_MODE_PASS, .pmic_mode_map =3D pmic_mode_map_pmic4_bob, .of_map_mode =3D rpmh_regulator_pmic4_bob_of_map_mode, }; @@ -975,6 +985,8 @@ static const struct rpmh_vreg_hw_data pmic5_bob =3D { }, .n_linear_ranges =3D 1, .n_voltages =3D 32, + .bypass_supported =3D true, + .pmic_bypass_mode =3D PMIC5_BOB_MODE_PASS, .pmic_mode_map =3D pmic_mode_map_pmic5_bob, .of_map_mode =3D rpmh_regulator_pmic4_bob_of_map_mode, }; --=20 2.25.1 From nobody Wed Oct 22 08:52:33 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 71719286897 for ; Tue, 21 Oct 2025 21:09:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080951; cv=none; b=TH2RP/+piTcf5n+Bm0dkSF04INVgSOSbDRptmkBy3cdDqt7a8i1Y7ZE7+tvudPbLLgEhBYdZz7hpyrkfQPHSV8skUoEgBhNT27AaazDhRa12K0GtOqQI2yz0zDOGrLbYFqVnR4pdDb9tylZ5b7HkxFklclaifyDB+xuDUO9tYSI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080951; c=relaxed/simple; bh=IYnlj7LXZPv8KblJK4JOxfWz5iX9/ovyWWmCoKyeldE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=F6khag7wLAjdVFu6L0iijUKfqKoH4yWQiOZoH73qFsibWsC/IVDYXnuCDqqeEZQXI+J91Mrcgme6FAP7EFeWvZhYBOJe6eSkhnEGR3n4vUf65Q6qR8qbU9UfLmjHmhT2J9F/wa9qWytPOUU0+AbzhPQv4/aIUBv+PRt1RxJT34I= 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=LYnoTcHt; arc=none smtp.client-ip=205.220.180.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="LYnoTcHt" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59LE6ngk024879 for ; Tue, 21 Oct 2025 21:09:08 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= S1lDbfpkOot17HD81aaVZVl8RbtCiVtkKz86iz+Hgk0=; b=LYnoTcHtNXEy/6Ia yRMhxOJ1Od5NJafinq13VxKJRnrzTrsR8WlU6UxfALwla63fSD4Pq/jotJLUh1KC aMPaV01Ksa7lNOGq31+r6ZsUKtVMS0dLTsVFtiy4bQWt+QSIa5BcjBlwNcpXdIi5 mD94fLLp33G3/fP4DTcMvJlQukYy1WNtb93rObY508A4cYUHYt3SBdqJG/CbLqTK ZDvzkigCZiV8oI/cAQa/zwBpsGEiReOMbwi/r5Up5RXqsineMmdfGIlgmjfMXbtC LE7H8LI1Kcb1Xk3KfiqqsQ/h368Hdtty53Mxq46p1yi8AjUMM/BFLy8VPcp9JP78 tlJMYA== Received: from mail-pg1-f200.google.com (mail-pg1-f200.google.com [209.85.215.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49wsws4me4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 21 Oct 2025 21:09:08 +0000 (GMT) Received: by mail-pg1-f200.google.com with SMTP id 41be03b00d2f7-b522037281bso3852400a12.3 for ; Tue, 21 Oct 2025 14:09:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761080947; x=1761685747; 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=S1lDbfpkOot17HD81aaVZVl8RbtCiVtkKz86iz+Hgk0=; b=XQfnXZjrlXMEsLy+Ve5ToUpi4H6UDrcITaWxkt86qznXRTMSgYxE98OpYFIbbbsAY+ cp53orOfg+vzePMRuttTjj8zBwbSCvkG0zUNu1KUc7u8maS9iN3WyNhLirGpEFFBUG/W e5rH16v7js71jZw1KosCS8KA5kDrT3heI44sTpGnNUKFJ1VUtpL2oD4VKV+IjThGYUid OIp0c1ojPiZN06lzSVAriu+5MqHulluS3b5nLAFxuCBQmECD0P6ttddvcf5F2MVjZZjE JwGpo0CjIX9qR0xOSCIk/pKda7ZVnPYAuumPWHgCzTPSc8n8WpqZikGV9kiAlQ4prHdJ wqrg== X-Forwarded-Encrypted: i=1; AJvYcCUgy2uM1GiVF1/BbVYSvzDKrDUVLKHQV+3Iubpmj0jxa4M714levwlVqVipLD/UhdbdPGogZB4CRAtdt7Q=@vger.kernel.org X-Gm-Message-State: AOJu0Yzru3HuoAPFPugJN7j66l1LefkDw1AYGj3b/BvHqMS7wDNNHTQ+ H+KgmO8lte1SDXFTbPEuPyDm7NGjOiSw6FoOdETs/ZW/qRIoPP+7G/lGzkd1UBYOZDdP47OLI1z tf/bThTSGQmr6eSj6IJRh2rdvkn2foGVGrUKaW5rShvLfIPkt/gAPfsv8GVDFNf88mKY= X-Gm-Gg: ASbGncvvDWjJYofFmx2JT+88VfHHCL6Yb2iYbe4EFVvLAJp40N3kruUP8tI+eBbjt6A PUf0n+aPDYMUar/AeMwUqRNWUJ2ejzPES2x9gruc336f5zqg1R08DTzbKI2jfa9xZQCfLbic740 AZZtz6TsR2of+l1y3FFbv+rYaZpzxWBFEUtXHxv8AaOp0qhCYOpA9qCPIiC7qhQu0ykp9ZUi+/Z qvO+q5d0gafdoVn0jLd9sSIvNvF3qYiaimhIptkpiWbh8NgyLLSpShCNSMW41xN9PDJm6wZGe4T RhhRO4pNC+cEkaedK0Cpwqc6cU99o5ME2s7kvsqHiC1GoMW0WjKdsUvumEuwB/twQalsxr9UVFa 1Oxk/p1MyfenM/QUBbUSaKzOaTLNj4gIKa+I+NzEjdT9WSdtI+D6Xm96uGUjv X-Received: by 2002:a05:6a20:3d8a:b0:2e2:3e68:6e36 with SMTP id adf61e73a8af0-334a8629dddmr22481514637.49.1761080946766; Tue, 21 Oct 2025 14:09:06 -0700 (PDT) X-Google-Smtp-Source: AGHT+IErhKmV81lNDF55ykcnebLwzRGAZfvjjqqKGHwmxPLIO3pK2VJXRkVNw/oKzvWOeGTrNOwEKw== X-Received: by 2002:a05:6a20:3d8a:b0:2e2:3e68:6e36 with SMTP id adf61e73a8af0-334a8629dddmr22481487637.49.1761080946280; Tue, 21 Oct 2025 14:09:06 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-33e223c813fsm489833a91.4.2025.10.21.14.09.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 14:09:05 -0700 (PDT) From: Kamal Wadhwa Date: Wed, 22 Oct 2025 02:38:54 +0530 Subject: [PATCH v2 2/4] soc: qcom: rpmh: Add support to read back resource settings 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: <20251022-add-rpmh-read-support-v2-2-5c7a8e4df601@oss.qualcomm.com> References: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> In-Reply-To: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa , Maulik Shah X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761080935; l=7721; i=kamal.wadhwa@oss.qualcomm.com; s=20241018; h=from:subject:message-id; bh=rpH2m6fV0PIyAMPCvD1xeto6cV05dSIbBAqJhS+qp84=; b=DGNvQk9aVlAr9xMHQNGu/q0p4bej7Qo2jzf2NiwIrRISE7Ud1p+GM6KVguwCUa/aO4cYGuF9Q g+vVuaMRZxcCJJqe4dqSUMiTbScLiNGNkc48Xdzsnbm5PeQIMZSESIP X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=XbPE6DM5/mJi2tsiYwMCJCZ4O5XPMqColJRlGVcM7Hs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDIwMDE0OCBTYWx0ZWRfXwXPcaA3sFQB3 dI0xd90aBVkoN2rCD6cA8oMb4ScN+On191nkzsLct5dDwViH//T32MAsm1W67T9ijRbTGjMqoaF e3avpMwctDFRDKtIGW5hBvTMx6u11R0OCFGFek45k07xMlRGJa9hXjMkWQwaBPbTn0OxSNc/oIZ FMZ/IyuKol5Z868aXVETt12m/3sBZCCf8Vr7SHbmu3OBTMARD6jz9e+k2ssKIpK7DgsKcFzu5NF 9WhI1Xg4EniXR5xT96zocfqGohBrcjXqxUbw94POv63xQDd/zViCl7Y0mTMIMoIWWY8+d5SVjec bwUC5qzHd4z2ZF87aPCh/5wQwbweYsx7FTGJ+HRdTksaM3B9YNSyHkNoFqWFoFPxbxIZMgtlC8p LVTb7ftbrOCVFiC+48UUe1mSdgIAAg== X-Proofpoint-GUID: GGYUCWWB7VT_AZSIiPAvDE73dM2QYjeE X-Proofpoint-ORIG-GUID: GGYUCWWB7VT_AZSIiPAvDE73dM2QYjeE X-Authority-Analysis: v=2.4 cv=a+E9NESF c=1 sm=1 tr=0 ts=68f7f674 cx=c_pps a=oF/VQ+ItUULfLr/lQ2/icg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=RgaPuue0vXMEEcOqpiYA:9 a=QEXdDO2ut3YA:10 a=3WC7DwWrALyhR5TkjVHa:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-21_03,2025-10-13_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 spamscore=0 clxscore=1015 priorityscore=1501 phishscore=0 bulkscore=0 suspectscore=0 malwarescore=0 impostorscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510200148 From: Maulik Shah All rpmh_*() APIs so far have supported placing votes for various resource settings but the H/W also have option to read resource settings. This change adds a new rpmh_read() API to allow clients to read back resource setting from H/W. This will be useful for clients like regulators, which currently don't have a way to know the settings applied during bootloader stage. Link: https://lore.kernel.org/r/20250623-add-rpmh-read-support-v1-1-ae583d2= 60195@oss.qualcomm.com Signed-off-by: Maulik Shah Signed-off-by: Kamal Wadhwa --- drivers/soc/qcom/rpmh-rsc.c | 13 +++++++++++-- drivers/soc/qcom/rpmh.c | 47 +++++++++++++++++++++++++++++++++++++++++= ---- include/soc/qcom/rpmh.h | 5 +++++ include/soc/qcom/tcs.h | 2 ++ 4 files changed, 61 insertions(+), 6 deletions(-) diff --git a/drivers/soc/qcom/rpmh-rsc.c b/drivers/soc/qcom/rpmh-rsc.c index c6f7d5c9c493d9e06c048930b8a14a38660df4b1..ec85c457ea4527f94339c2033bf= cc12346e3c443 100644 --- a/drivers/soc/qcom/rpmh-rsc.c +++ b/drivers/soc/qcom/rpmh-rsc.c @@ -443,6 +443,7 @@ static irqreturn_t tcs_tx_done(int irq, void *p) int i; unsigned long irq_status; const struct tcs_request *req; + u32 reg; =20 irq_status =3D readl_relaxed(drv->tcs_base + drv->regs[RSC_DRV_IRQ_STATUS= ]); =20 @@ -453,6 +454,11 @@ static irqreturn_t tcs_tx_done(int irq, void *p) =20 trace_rpmh_tx_done(drv, i, req); =20 + if (req->is_read) { + reg =3D drv->regs[RSC_DRV_CMD_RESP_DATA]; + req->cmds[0].data =3D read_tcs_reg(drv, reg, i); + } + /* Clear AMC trigger & enable modes and * disable interrupt for this TCS */ @@ -493,13 +499,15 @@ static void __tcs_buffer_write(struct rsc_drv *drv, i= nt tcs_id, int cmd_id, const struct tcs_request *msg) { u32 msgid; - u32 cmd_msgid =3D CMD_MSGID_LEN | CMD_MSGID_WRITE; + u32 cmd_msgid =3D CMD_MSGID_LEN; u32 cmd_enable =3D 0; struct tcs_cmd *cmd; int i, j; =20 /* Convert all commands to RR when the request has wait_for_compl set */ cmd_msgid |=3D msg->wait_for_compl ? CMD_MSGID_RESP_REQ : 0; + if (!msg->is_read) + cmd_msgid |=3D CMD_MSGID_WRITE; =20 for (i =3D 0, j =3D cmd_id; i < msg->num_cmds; i++, j++) { cmd =3D &msg->cmds[i]; @@ -513,7 +521,8 @@ static void __tcs_buffer_write(struct rsc_drv *drv, int= tcs_id, int cmd_id, =20 write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_MSGID], tcs_id, j, msgid); write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_ADDR], tcs_id, j, cmd->addr); - write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_DATA], tcs_id, j, cmd->data); + if (!msg->is_read) + write_tcs_cmd(drv, drv->regs[RSC_DRV_CMD_DATA], tcs_id, j, cmd->data); trace_rpmh_send_msg(drv, tcs_id, msg->state, j, msgid, cmd); } =20 diff --git a/drivers/soc/qcom/rpmh.c b/drivers/soc/qcom/rpmh.c index 8903ed956312d0a2ac7f673d86ef504947e9b119..4a611dac437ef28bac124583073= c87a79e9e5cad 100644 --- a/drivers/soc/qcom/rpmh.c +++ b/drivers/soc/qcom/rpmh.c @@ -175,6 +175,9 @@ static int __rpmh_write(const struct device *dev, enum = rpmh_state state, struct cache_req *req; int i; =20 + if (rpm_msg->msg.is_read) + goto send_data; + /* Cache the request in our store and link the payload */ for (i =3D 0; i < rpm_msg->msg.num_cmds; i++) { req =3D cache_rpm_request(ctrlr, state, &rpm_msg->msg.cmds[i]); @@ -182,6 +185,7 @@ static int __rpmh_write(const struct device *dev, enum = rpmh_state state, return PTR_ERR(req); } =20 +send_data: if (state =3D=3D RPMH_ACTIVE_ONLY_STATE) { ret =3D rpmh_rsc_send_data(ctrlr_to_drv(ctrlr), &rpm_msg->msg); } else { @@ -194,7 +198,7 @@ static int __rpmh_write(const struct device *dev, enum = rpmh_state state, } =20 static int __fill_rpmh_msg(struct rpmh_request *req, enum rpmh_state state, - const struct tcs_cmd *cmd, u32 n) + const struct tcs_cmd *cmd, u32 n, bool is_read) { if (!cmd || !n || n > MAX_RPMH_PAYLOAD) return -EINVAL; @@ -204,10 +208,45 @@ static int __fill_rpmh_msg(struct rpmh_request *req, = enum rpmh_state state, req->msg.state =3D state; req->msg.cmds =3D req->cmd; req->msg.num_cmds =3D n; + req->msg.is_read =3D is_read; =20 return 0; } =20 +/** + * rpmh_read: Read a resource value + * + * @dev: The device making the request + * @cmd: The payload having address of resource to read + * + * Reads the value for the resource address given in tcs_cmd->addr + * and returns the tcs_cmd->data filled with same. + * + * May sleep. Do not call from atomic contexts. + * + * Return: 0 on success, negative errno on failure + */ +int rpmh_read(const struct device *dev, struct tcs_cmd *cmd) +{ + DECLARE_COMPLETION_ONSTACK(compl); + DEFINE_RPMH_MSG_ONSTACK(dev, RPMH_ACTIVE_ONLY_STATE, &compl, rpm_msg); + int ret; + + ret =3D __fill_rpmh_msg(&rpm_msg, RPMH_ACTIVE_ONLY_STATE, cmd, 1, true); + if (ret) + return ret; + + ret =3D __rpmh_write(dev, RPMH_ACTIVE_ONLY_STATE, &rpm_msg); + if (ret) + return ret; + + ret =3D wait_for_completion_timeout(&compl, RPMH_TIMEOUT_MS); + cmd[0].data =3D rpm_msg.cmd[0].data; + + return (ret > 0) ? 0 : -ETIMEDOUT; +} +EXPORT_SYMBOL_GPL(rpmh_read); + /** * rpmh_write_async: Write a set of RPMH commands * @@ -230,7 +269,7 @@ int rpmh_write_async(const struct device *dev, enum rpm= h_state state, return -ENOMEM; rpm_msg->needs_free =3D true; =20 - ret =3D __fill_rpmh_msg(rpm_msg, state, cmd, n); + ret =3D __fill_rpmh_msg(rpm_msg, state, cmd, n, false); if (ret) { kfree(rpm_msg); return ret; @@ -257,7 +296,7 @@ int rpmh_write(const struct device *dev, enum rpmh_stat= e state, DEFINE_RPMH_MSG_ONSTACK(dev, state, &compl, rpm_msg); int ret; =20 - ret =3D __fill_rpmh_msg(&rpm_msg, state, cmd, n); + ret =3D __fill_rpmh_msg(&rpm_msg, state, cmd, n, false); if (ret) return ret; =20 @@ -352,7 +391,7 @@ int rpmh_write_batch(const struct device *dev, enum rpm= h_state state, rpm_msgs =3D req->rpm_msgs; =20 for (i =3D 0; i < count; i++) { - __fill_rpmh_msg(rpm_msgs + i, state, cmd, n[i]); + __fill_rpmh_msg(rpm_msgs + i, state, cmd, n[i], false); cmd +=3D n[i]; } =20 diff --git a/include/soc/qcom/rpmh.h b/include/soc/qcom/rpmh.h index bdbee1a97d3685d8a6153d586ddf650bd3bd3dde..14ecbf242b6bd67c8167c176ed0= 970f42432f4f4 100644 --- a/include/soc/qcom/rpmh.h +++ b/include/soc/qcom/rpmh.h @@ -11,6 +11,8 @@ =20 =20 #if IS_ENABLED(CONFIG_QCOM_RPMH) +int rpmh_read(const struct device *dev, struct tcs_cmd *cmd); + int rpmh_write(const struct device *dev, enum rpmh_state state, const struct tcs_cmd *cmd, u32 n); =20 @@ -24,6 +26,9 @@ void rpmh_invalidate(const struct device *dev); =20 #else =20 +static inline int rpmh_read(const struct device *dev, struct tcs_cmd *cmd) +{ return -ENODEV; } + static inline int rpmh_write(const struct device *dev, enum rpmh_state sta= te, const struct tcs_cmd *cmd, u32 n) { return -ENODEV; } diff --git a/include/soc/qcom/tcs.h b/include/soc/qcom/tcs.h index cff67ce25488e2d3603a7707af2ca77f8266a713..45b8513be2f9bb0957796476f60= 31146ee34e931 100644 --- a/include/soc/qcom/tcs.h +++ b/include/soc/qcom/tcs.h @@ -51,6 +51,7 @@ struct tcs_cmd { * struct tcs_request: A set of tcs_cmds sent together in a TCS * * @state: state for the request. + * @is_read: set for read only requests * @wait_for_compl: wait until we get a response from the h/w accelerator * (same as setting cmd->wait for all commands in the req= uest) * @num_cmds: the number of @cmds in this request @@ -58,6 +59,7 @@ struct tcs_cmd { */ struct tcs_request { enum rpmh_state state; + bool is_read; u32 wait_for_compl; u32 num_cmds; struct tcs_cmd *cmds; --=20 2.25.1 From nobody Wed Oct 22 08:52:33 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 53EF52882A1 for ; Tue, 21 Oct 2025 21:09:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080954; cv=none; b=cYqPROegK3DSyvOUr/2AqzdZt2I2lsOw3LMFaxpJUJ0x8ZVG6WjVIrzii0VNaWE1wFLC63i4HKPpsDX4jDEXZmktQq2iiwS6acBAgiNMPUeqnJ4PLQqfq+1I4b+QqdkieBEVG32x4ShoB+iJ6pt7A+yk3kHjRcqDZ5SFXdj30Gg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080954; c=relaxed/simple; bh=Ni9qSXT2cz8dlN1oChGVBn8LzfG1KAHlQ4Xgl3R07pE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=eqwoRHO/lmR0bDj6Hg+tos3wSwaJu8DqQV5K8H76+cljoeRCG09HfdaheW9HE2GlyiP6d3eIS9oc/aGmRcJQOE2fFYFD1oDtFN4+xH3I9AuVFN3E+ECeqHfM+XeqOpyd+yHxcwuK2K5hBEQKI4gySJN3IhcGjZihqzRj16RRQNA= 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=Q0vvAETc; arc=none smtp.client-ip=205.220.180.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="Q0vvAETc" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59LEvdN2024200 for ; Tue, 21 Oct 2025 21:09:11 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= 0XR3pTkPELDg+1G0fDtyKBkyK2LsQiE/QZsLPylC07Q=; b=Q0vvAETcehhax5jX yab09dOvq+7OMv6ek87Z9nKCa7fqQvT/qWAIjkzM31dTL6QH/G6xnE9YPvKEcYME YSqkl0baQ/ifLsvRfIyuMjrc4SF0N8qGoNmV10De7qVZPrUrMnAI1uhCi97QtDc7 Iiun/+thzeCKWEj5WgyyYBT+IY+vO/R7B6bMRglqy1YZ0RebvFRiVX92tjyNh6IX UZ0UleDUYAUvlYSNG4b2Av3rWpoCb0oMuyd4DyY1hl8cPnF4zZOjOca1JIPjB0Ha JSHWL9mQF9fvPFb13oT0pHrnvskfxP95Obx2WySOh0EmKof9fo5ArPokxtpW60ql XypJBg== Received: from mail-pf1-f198.google.com (mail-pf1-f198.google.com [209.85.210.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 49v1w829m8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 21 Oct 2025 21:09:11 +0000 (GMT) Received: by mail-pf1-f198.google.com with SMTP id d2e1a72fcca58-77f610f7325so5132315b3a.1 for ; Tue, 21 Oct 2025 14:09:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761080950; x=1761685750; 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=0XR3pTkPELDg+1G0fDtyKBkyK2LsQiE/QZsLPylC07Q=; b=Dvp+5p3yAX1LMkGpasGkL3BFUlBG0g/s9lJHdtfalPEtQzT1cYyCS0koYeZ7vQzNDG E9ld4jC4eZyRZogm2ztk1RIcv7vFreiM5QOR30VsmMykzEZSeOhqF7TnpZuG7qy+erM2 Uww7BPk91dflSi+38OekLK4kdakC6GYMFJV1vIuVHv6N8yYwsR6rtJjdY+Bl2r3AAHTo 4E0pH6fWVhNwyBvZlpwCjLvmjQL1aqnndymSxdpRFaiyuz9hCb/1jKojrFaoY9lNZ4F5 /Qbm28KKHE2VZW592Ock2Wvp0Tu/Wa5bmYjXq8tBU1W1LL3TQAOFNsaliAU1CTe+/g1Q pRYQ== X-Forwarded-Encrypted: i=1; AJvYcCWf+JYE1o6bne//daQzlVZ0txJvqaxgtBimBjYByJePjYj381+Si5dbuVjPGtfGnYPi/E2aGzNJZuoqSOo=@vger.kernel.org X-Gm-Message-State: AOJu0YyCtdxbfdRZHk1fuGspt131ON5XaJovot0EHajEyYiDwYAIC47k GhEHZra++xgWbnO9FQCOEi61yfXRB5EWFBfTO4AGtUeiYfr0Jwy1m2BjzD2CLiNq66K1D3Nl/Im sy+9v+SSy0Yi1QL6g6UTl3vPcBAvythRMiiHTBTariBcC3qLPkPRjNUScLshMRQtAYsc= X-Gm-Gg: ASbGncvFk1ofedjYP4D3NguVdQJExbOkBXYDG8EU4Gci/TkLhLbDQJ6xMY3I2L8b4rr n3aMZEe4YcZphPzy29sj3lEZegOXNEPs5jXOo4JhX65GM4fDu+SAvdUndcwuFzA6B3ZV5+SblOb Pw/iwQDpevktgE5+dqxFyVHYmsBuYcdYubO9r48dCIig66OCqOBJb7vRMXKnrznC297w33fh5kl iyh9euiXcPvv5JBl4aEE/Fe9gLCgVHe4K2zHaNDE6rB21UoVuRcIRqDC2pBKD+KSr039ZZLVjcm ix7lpdjuuuqSNpErkW5AG3i2cFs9h2fwxt777WD7OQIBRx4nWteb6YgOLVm150RKty6/MMtnuXv fojdBnKVRe0Fb5/Z9jpVm3nJWwY7ZgU5byHQExIU7JkZNWFRaV9qyKQEykAVA X-Received: by 2002:a05:6a20:4322:b0:334:a322:f31f with SMTP id adf61e73a8af0-334a86292f4mr24920837637.42.1761080949980; Tue, 21 Oct 2025 14:09:09 -0700 (PDT) X-Google-Smtp-Source: AGHT+IECpKZ2qfH9o2G05nBzZs8RUrzWCSXOS4iNOphhPw28ZlSzA9UcIpeBeGx/Lt60EXTdSAm3Kw== X-Received: by 2002:a05:6a20:4322:b0:334:a322:f31f with SMTP id adf61e73a8af0-334a86292f4mr24920814637.42.1761080949529; Tue, 21 Oct 2025 14:09:09 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-33e223c813fsm489833a91.4.2025.10.21.14.09.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 14:09:08 -0700 (PDT) From: Kamal Wadhwa Date: Wed, 22 Oct 2025 02:38:55 +0530 Subject: [PATCH v2 3/4] regulator: qcom-rpmh: Add support to read regulator settings 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: <20251022-add-rpmh-read-support-v2-3-5c7a8e4df601@oss.qualcomm.com> References: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> In-Reply-To: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa , David Collins X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761080935; l=9661; i=kamal.wadhwa@oss.qualcomm.com; s=20241018; h=from:subject:message-id; bh=Ni9qSXT2cz8dlN1oChGVBn8LzfG1KAHlQ4Xgl3R07pE=; b=rGshG/7+nuv3U9fugsY7EcAfGk07yjpMWJgy1ciYm7aZAJLOR8VcYSTvWgx4I5MeFCpWFZCC/ pxbtZLTvb1ZDL8as76PXPPLYx3PfDq8ktmQedwD8ytDNhHsavJcgkI6 X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=XbPE6DM5/mJi2tsiYwMCJCZ4O5XPMqColJRlGVcM7Hs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAxNSBTYWx0ZWRfX7TJqJLRxNjZV CEdq0EF2IP5CtKSEv3bYA4iY/XT2EDX2K/DzO7JJMFwaGn3jMYHkkYt1Tfs5iZziMBN05PSOM73 mq68LqKvP3VzVKuRc4cG4hcXxvNgPdao5PhvkWlyR7ml0b9COWikPXGNrPNlDLPDqsdeH20qUmt 6F+0Ti1dU9/IzRQKpXl/mtUlsMDOtCsYyqKAOSxgVCzscM3/SxL/5nMH1uWphVDPNTlzpkE10R4 rLLq1GgW4PxBViIe4BV5tnQjkBUlQ/9NvNAMgsyJ75mU9DBmFENuI4SXwSUb88yfQY4V4Mo+2NI omI+eQwfkbRXbLuO4kctxaWjJd91o4l5yAdXFCOc4Kvtb+n+Ro9wT1zFRcsnSAAFc82V3uwM40X rtu6275Oh5+Q6UfIVmzY1A5e2OPPyA== X-Authority-Analysis: v=2.4 cv=bNUb4f+Z c=1 sm=1 tr=0 ts=68f7f677 cx=c_pps a=m5Vt/hrsBiPMCU0y4gIsQw==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=VwQbUJbxAAAA:8 a=EUspDBNiAAAA:8 a=KMC9D6KHGo71LM7F26sA:9 a=QEXdDO2ut3YA:10 a=IoOABgeZipijB_acs4fv:22 X-Proofpoint-GUID: DOMz7bIdbzwmr1L9ZI2OOdkZ2C4HKNIh X-Proofpoint-ORIG-GUID: DOMz7bIdbzwmr1L9ZI2OOdkZ2C4HKNIh X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-21_03,2025-10-13_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 phishscore=0 malwarescore=0 lowpriorityscore=0 clxscore=1015 priorityscore=1501 suspectscore=0 adultscore=0 spamscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180015 Currently, the RPMH regulator's `get_voltage_sel()` function only returns cached values from the last `set_voltage_sel()` operation. This limitation prevents the regulator framework from accurately reflecting the regulator configurations set during the bootloader stage. As a result, the regulator framework may trigger an unnecessary `set_voltage_sel()` call with the `min_uV` value specified in the regulator's device tree settings, which can cause issues for consumers like the display and UFS that require a consistent voltage setting from the bootloader state until their drivers are probed. To address this issue, enhance the `get_voltage_sel()`, and also add new `get_status()` callbacks to read the regulator settings directly from the RPMH hardware using the `rpmh_read()`function. This change ensures that the regulator framework accurately reflects the actual state of the regulators, avoiding unnecessary voltage adjustments and maintaining consistent power settings across the transition from bootloader to kernel. Signed-off-by: David Collins Signed-off-by: Kamal Wadhwa Link: https://lore.kernel.org/r/20250623-add-rpmh-read-support-v1-2-ae583d2= 60195@oss.qualcomm.com --- drivers/regulator/qcom-rpmh-regulator.c | 164 ++++++++++++++++++++++++++++= ++++ 1 file changed, 164 insertions(+) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 947fb5241233c92eaeda974b1b64d227d5946a59..9f693043cb87aa77a7a529b5b97= 3323450db80be 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -61,8 +61,13 @@ static const struct resource_name_formats vreg_rsc_name_= lookup[NUM_REGULATOR_TYP }; =20 #define RPMH_REGULATOR_REG_VRM_VOLTAGE 0x0 +#define RPMH_REGULATOR_VOLTAGE_MASK 0x1FFF + #define RPMH_REGULATOR_REG_ENABLE 0x4 +#define RPMH_REGULATOR_ENABLE_MASK 0x1 + #define RPMH_REGULATOR_REG_VRM_MODE 0x8 +#define RPMH_REGULATOR_MODE_MASK 0x7 =20 #define PMIC4_LDO_MODE_RETENTION 4 #define PMIC4_LDO_MODE_LPM 5 @@ -169,6 +174,7 @@ struct rpmh_vreg { bool bypassed; int voltage_selector; unsigned int mode; + unsigned int status; }; =20 /** @@ -213,6 +219,36 @@ static int rpmh_regulator_send_request(struct rpmh_vre= g *vreg, return ret; } =20 +static int rpmh_regulator_read_data(struct rpmh_vreg *vreg, struct tcs_cmd= *cmd) +{ + return rpmh_read(vreg->dev, cmd); +} + +static int _rpmh_regulator_vrm_get_voltage(struct regulator_dev *rdev, int= *uV) +{ + struct rpmh_vreg *vreg =3D rdev_get_drvdata(rdev); + struct tcs_cmd cmd =3D { + .addr =3D vreg->addr + RPMH_REGULATOR_REG_VRM_VOLTAGE, + }; + int min_uV =3D rdev->constraints->min_uV; + int max_uV =3D rdev->constraints->max_uV; + int ret, _uV =3D 0; + + ret =3D rpmh_regulator_read_data(vreg, &cmd); + if (!ret) + _uV =3D (cmd.data & RPMH_REGULATOR_VOLTAGE_MASK) * 1000; + else + dev_err(vreg->dev, "failed to read VOLTAGE ret =3D %d\n", ret); + + if (!_uV || (_uV >=3D min_uV && _uV <=3D max_uV)) + *uV =3D _uV; + else + dev_dbg(vreg->dev, "read voltage %d is out-of-range[%d:%d]\n", + _uV, min_uV, max_uV); + + return ret; +} + static int _rpmh_regulator_vrm_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector, bool wait_for_ack) { @@ -254,10 +290,36 @@ static int rpmh_regulator_vrm_set_voltage_sel(struct = regulator_dev *rdev, static int rpmh_regulator_vrm_get_voltage_sel(struct regulator_dev *rdev) { struct rpmh_vreg *vreg =3D rdev_get_drvdata(rdev); + int ret, uV =3D 0; + + if (vreg->voltage_selector < 0) { + ret =3D _rpmh_regulator_vrm_get_voltage(rdev, &uV); + if (!ret && uV !=3D 0) + vreg->voltage_selector =3D regulator_map_voltage_linear_range(rdev, + uV, INT_MAX); + } =20 return vreg->voltage_selector; } =20 +static enum regulator_status convert_mode_to_status(int mode) +{ + switch (mode) { + case REGULATOR_MODE_FAST: + return REGULATOR_STATUS_FAST; + case REGULATOR_MODE_NORMAL: + return REGULATOR_STATUS_NORMAL; + case REGULATOR_MODE_IDLE: + return REGULATOR_STATUS_IDLE; + case REGULATOR_MODE_STANDBY: + return REGULATOR_STATUS_STANDBY; + case REGULATOR_MODE_INVALID: + return REGULATOR_STATUS_ERROR; + default: + return REGULATOR_STATUS_UNDEFINED; + }; +} + static int rpmh_regulator_is_enabled(struct regulator_dev *rdev) { struct rpmh_vreg *vreg =3D rdev_get_drvdata(rdev); @@ -287,6 +349,15 @@ static int rpmh_regulator_set_enable_state(struct regu= lator_dev *rdev, if (!ret) vreg->enabled =3D enable; =20 + if (vreg->enabled) { + if (vreg->bypassed) + vreg->status =3D REGULATOR_STATUS_BYPASS; + else + vreg->status =3D convert_mode_to_status(vreg->mode); + } else { + vreg->status =3D REGULATOR_STATUS_OFF; + } + return ret; } =20 @@ -323,6 +394,15 @@ static int rpmh_regulator_vrm_set_mode_bypass(struct r= pmh_vreg *vreg, cmd.data =3D pmic_mode; } =20 + if (vreg->enabled) { + if (bypassed) + vreg->status =3D REGULATOR_STATUS_BYPASS; + else + vreg->status =3D convert_mode_to_status(mode); + } else { + vreg->status =3D REGULATOR_STATUS_OFF; + } + return rpmh_regulator_send_request(vreg, &cmd, true); } =20 @@ -342,6 +422,22 @@ static int rpmh_regulator_vrm_set_mode(struct regulato= r_dev *rdev, return ret; } =20 +static int rpmh_regulator_vrm_get_pmic_mode(struct rpmh_vreg *vreg, int *p= mic_mode) +{ + struct tcs_cmd cmd =3D { + .addr =3D vreg->addr + RPMH_REGULATOR_REG_VRM_MODE, + }; + int ret; + + ret =3D rpmh_regulator_read_data(vreg, &cmd); + if (!ret) + *pmic_mode =3D cmd.data & RPMH_REGULATOR_MODE_MASK; + else + return -EINVAL; + + return 0; +} + static unsigned int rpmh_regulator_vrm_get_mode(struct regulator_dev *rdev) { struct rpmh_vreg *vreg =3D rdev_get_drvdata(rdev); @@ -349,6 +445,13 @@ static unsigned int rpmh_regulator_vrm_get_mode(struct= regulator_dev *rdev) return vreg->mode; } =20 +static int rpmh_regulator_vrm_get_status(struct regulator_dev *rdev) +{ + struct rpmh_vreg *vreg =3D rdev_get_drvdata(rdev); + + return vreg->status; +} + /** * rpmh_regulator_vrm_get_optimum_mode() - get the mode based on the load * @rdev: Regulator device pointer for the rpmh-regulator @@ -407,6 +510,7 @@ static const struct regulator_ops rpmh_regulator_vrm_op= s =3D { .list_voltage =3D regulator_list_voltage_linear_range, .set_mode =3D rpmh_regulator_vrm_set_mode, .get_mode =3D rpmh_regulator_vrm_get_mode, + .get_status =3D rpmh_regulator_vrm_get_status, }; =20 static const struct regulator_ops rpmh_regulator_vrm_drms_ops =3D { @@ -418,6 +522,7 @@ static const struct regulator_ops rpmh_regulator_vrm_dr= ms_ops =3D { .list_voltage =3D regulator_list_voltage_linear_range, .set_mode =3D rpmh_regulator_vrm_set_mode, .get_mode =3D rpmh_regulator_vrm_get_mode, + .get_status =3D rpmh_regulator_vrm_get_status, .get_optimum_mode =3D rpmh_regulator_vrm_get_optimum_mode, }; =20 @@ -430,6 +535,7 @@ static const struct regulator_ops rpmh_regulator_vrm_by= pass_ops =3D { .list_voltage =3D regulator_list_voltage_linear_range, .set_mode =3D rpmh_regulator_vrm_set_mode, .get_mode =3D rpmh_regulator_vrm_get_mode, + .get_status =3D rpmh_regulator_vrm_get_status, .set_bypass =3D rpmh_regulator_vrm_set_bypass, .get_bypass =3D rpmh_regulator_vrm_get_bypass, }; @@ -438,6 +544,7 @@ static const struct regulator_ops rpmh_regulator_xob_op= s =3D { .enable =3D rpmh_regulator_enable, .disable =3D rpmh_regulator_disable, .is_enabled =3D rpmh_regulator_is_enabled, + .get_status =3D rpmh_regulator_vrm_get_status, }; =20 /** @@ -546,6 +653,58 @@ static int rpmh_regulator_init_vreg(struct rpmh_vreg *= vreg, struct device *dev, return 0; } =20 +static int rpmh_regulator_determine_initial_status(struct rpmh_vreg *vreg) +{ + struct tcs_cmd cmd =3D { + .addr =3D vreg->addr + RPMH_REGULATOR_REG_ENABLE, + }; + int ret, pmic_mode, mode; + int sts =3D 0; + + ret =3D rpmh_regulator_read_data(vreg, &cmd); + if (ret) { + dev_dbg(vreg->dev, "failed to read ENABLE status ret =3D %d\n", ret); + vreg->status =3D REGULATOR_STATUS_UNDEFINED; + return ret; + } + + sts =3D cmd.data & RPMH_REGULATOR_ENABLE_MASK; + if (!sts) { + vreg->status =3D REGULATOR_STATUS_OFF; + return 0; + } + + if (vreg->hw_data->regulator_type =3D=3D XOB) { + vreg->status =3D sts ? REGULATOR_STATUS_ON : REGULATOR_STATUS_OFF; + return 0; + } + + ret =3D rpmh_regulator_vrm_get_pmic_mode(vreg, &pmic_mode); + if (ret < 0) { + dev_dbg(vreg->dev, "failed to read pmic_mode ret =3D %d\n", ret); + vreg->mode =3D REGULATOR_MODE_INVALID; + vreg->status =3D REGULATOR_STATUS_UNDEFINED; + return ret; + } + + if (vreg->hw_data->bypass_supported && + vreg->hw_data->pmic_bypass_mode =3D=3D pmic_mode) { + vreg->bypassed =3D true; + vreg->status =3D REGULATOR_STATUS_BYPASS; + return 0; + } + + for (mode =3D 0; mode <=3D REGULATOR_MODE_STANDBY; mode++) { + if (pmic_mode =3D=3D vreg->hw_data->pmic_mode_map[mode]) { + vreg->mode =3D mode; + break; + } + } + + vreg->status =3D convert_mode_to_status(vreg->mode); + return 0; +} + static const int pmic_mode_map_pmic4_ldo[REGULATOR_MODE_STANDBY + 1] =3D { [REGULATOR_MODE_INVALID] =3D -EINVAL, [REGULATOR_MODE_STANDBY] =3D PMIC4_LDO_MODE_RETENTION, @@ -1820,6 +1979,11 @@ static int rpmh_regulator_probe(struct platform_devi= ce *pdev) vreg_data); if (ret < 0) return ret; + + ret =3D rpmh_regulator_determine_initial_status(vreg); + if (ret < 0) + dev_err(dev, "failed to read initial status for %s\n", + vreg->rdesc.name); } =20 return 0; --=20 2.25.1 From nobody Wed Oct 22 08:52:33 2025 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.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 54D9B288531 for ; Tue, 21 Oct 2025 21:09:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080957; cv=none; b=f5KiSCOxgLIYaHjHFYriuHn2hDAkzmvmu/Ny1tFzmFDjIDCTumnVnBrm7hIfia0rG5JYcI+d9RMb6E+BrggPV1EWYjcuUSE06TFOxN4mSjohW/d4k5sI5FXRs5s0lkUGYuOzIbKcEl+Pi/zqDLFlDy4Knuwv2JC8QG8v9QLynXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1761080957; c=relaxed/simple; bh=QNvlniIPRRmC+7hzmYy/77uxWdyoOFIOrKIrPOzfp44=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=FkJBOpQqGyjXgJG2FdE8kGubfNIEG6cFeP8TS8XmFCklvlUh42FOs1U+HZ9H/nVirYQ88Ai7y97DDMAfudvkq0tz0iiWY/DAgTfBrcEPhllxJi6Pu3B4UORZfLbVwFGSZUPK0BFPULP8SsxBH5YuDmTU5eWQWGbcBbmde6jiNcU= 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=Hh+G2pAE; arc=none smtp.client-ip=205.220.180.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="Hh+G2pAE" Received: from pps.filterd (m0279868.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 59LFBRiW027492 for ; Tue, 21 Oct 2025 21:09:14 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= CAALojfa9D3YOG9vqJaxSjRtqnXPbgz0Npkm+sxU7tY=; b=Hh+G2pAEmJ3AR9Cu 8BgjjVnlB4kFt/846t7FI3dL8WwgOi+z19kkrww5nwl/Cv9bFPNoJefnt7W2xC4A RtSA8MubZwtcpUMzRDfmaUq2hE3cklZK9NytC9le1wCp4kI2+0WNMri/8sBCLsSO EfGHHQ+AriyiIRXbEeGF1VUmmyG0AHROwMIhFWErffa+dRa1ojzroMxGayPKba8m xQDuldSdIDvUVMQppilR0X7IErGcR05QmvwvX05ZQYOwWgdQ+tT0m8PErKznPVJV wx5uUmur9vJryRX5EKuCh1mMgfE1a7z15amNBKIMIhpRb2Yoiy+RsLyZ0hByVoXr NSGKjg== 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 49v27j28fx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Tue, 21 Oct 2025 21:09:14 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-32eb18b5500so10036559a91.2 for ; Tue, 21 Oct 2025 14:09:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761080953; x=1761685753; 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=CAALojfa9D3YOG9vqJaxSjRtqnXPbgz0Npkm+sxU7tY=; b=IZIh/XGzoWKPvZ5WxpOwkPUL2p5ua5/g7NTi4Z6qU/OReOIEDiSsxxIJZSJVX8Ykgg kXblgBusqptTUyfTFGEKpGJssKXUkwjXmc1fQT4b1pU5ctgE4klhADk6BMNHsL0VoHiW 4rzVnP2smxtNGczK1w+ajt14Bid6b/HdIfiBOIaRZOOVE+3x+nOhm0q9XqGVEGNnhlrh OgbPLQKkW6lKtFiOwNhT7hTBwysYCKXW5LA1vhliFnzBp2zyI1OKjBembKGbnMc62W/e KDCtyC5MJ9nhafZ+38dMKmiTTRXVKv9xufaCJnSICSIru3rirwIczyy178b19FG6cQ9e X+jw== X-Forwarded-Encrypted: i=1; AJvYcCWPFtsRIC2ZjROo83g2h12spk+3BWgo/F1d3MqLbrHzc5haSUCSLfuCtCjDISzhBEiJAlYLkHRjbs6faLs=@vger.kernel.org X-Gm-Message-State: AOJu0Yzy4dp5doVn0yDOeVGt0rjmFfEaTRraai3QnBwDUsmSB0CuLBXx Nb+VcfkLe+8TFPWykwAONlDRuccLmZWPEbHJLfH+gHLYdK1P9JYAoiB2oazPL9ntcx7n/pTKNFh qC5Ef79hI2EiOmo5vJgsM5DMYcT9eNheqJHoCYhqv2l2IYo1XCLRZQQh9KpIgx3mlG2Y= X-Gm-Gg: ASbGncujxd3iFotxFGwRetRsAPkyUxuXVDI2E46i3bWglvEqE9gXfioIxBHcNek879I SZnSgUYPSrdF99ueeaKAYGF8Bq1M3PxvLByh5vpWh8/vvK2TNXoPtv4GWoOWXUQOrwT0eOtVelO 4VN5wbMoATS8crZh95nW8chsINTcnBwakoZJnVnc1h0aTONsPAST1763oWt2ON5QV0uw7QU0GJR HHxRdR1eXNM4i7UIzJ9bQJRLtqxYifG6DzkDijNLg1YCGOrUxXqpH9JE9EpcSjkJTDj+BElCuW2 heHms2cOgnO3SHQx8Uw+ZNGcOxf/o7KvOGJ/Isj7o4UjeqKdYRhRccEopFT2V/5syXjVqd7YX1s Kxhs/LaDKxE2q6CNcyToH5YwYHppdC/p0GZSaByEY8ZX4m7kaHANViX4CGQXG X-Received: by 2002:a17:90b:35ce:b0:32e:32e4:9789 with SMTP id 98e67ed59e1d1-33bcf84e176mr21316827a91.3.1761080953167; Tue, 21 Oct 2025 14:09:13 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFMpbS44IxkY7rp0ciZyWybKD9zdWqN+g8eCr9evFoO6q8WEg17R5Ttb5DQ0qQyfb8I4IpyEA== X-Received: by 2002:a17:90b:35ce:b0:32e:32e4:9789 with SMTP id 98e67ed59e1d1-33bcf84e176mr21316799a91.3.1761080952712; Tue, 21 Oct 2025 14:09:12 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-33e223c813fsm489833a91.4.2025.10.21.14.09.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Oct 2025 14:09:12 -0700 (PDT) From: Kamal Wadhwa Date: Wed, 22 Oct 2025 02:38:56 +0530 Subject: [PATCH v2 4/4] regulators: qcom-rpmh-regulator: Fix coding style issues 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: <20251022-add-rpmh-read-support-v2-4-5c7a8e4df601@oss.qualcomm.com> References: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> In-Reply-To: <20251022-add-rpmh-read-support-v2-0-5c7a8e4df601@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1761080935; l=1302; i=kamal.wadhwa@oss.qualcomm.com; s=20241018; h=from:subject:message-id; bh=QNvlniIPRRmC+7hzmYy/77uxWdyoOFIOrKIrPOzfp44=; b=5UlbwWUZKgBli2eyjUgKM7AA8obLevlo8qUFii1yVNx/DPePcuttzmnMHl5bzY3kc+H7FcJwN mkbLakw8LMcCnumNA9UMb7LPP/eEF2cE3ygIqkuW62C0kO8ECmfzyXa X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=XbPE6DM5/mJi2tsiYwMCJCZ4O5XPMqColJRlGVcM7Hs= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMDE4MDAxOCBTYWx0ZWRfX8/kA1xDSpGKF u4sy57Q0Y3Ndz10xcv+zGQ8jyHkQEgjDJo/K9loAfb03g9Zvhn9A/MxIpEcVo24k4TqyWMAecSI I2pkJ0paVuIJuD8jkPtnH4MWOr+d/mSgUzwHJLCxEUYyY/YCe7UuXPYTBXMx2iqVsRFrr5gXDkH SW015d8JTJJJ6U5gfIpfb6e2lHwPXWtXBGvgxyohYRoJfG0cYI8IHIiSScjako0+K9Y3JNoTVfp CP6OzreGKYDEebHo29wZucUCBE1dpIHbHPu3Gvx6c6bHXET6gscBE9b6R/BFemf4xN/0sCCM+67 T8hrHdXJ1+xqhQOnR3hUymLJ/bH2BsGsnMmtXi1ECy2W/AFKYfgweUu224T8+GNpdlZzsvBp/Cp t1+5+1JIFCqlPbArZ7blvbJtK6KYqw== X-Authority-Analysis: v=2.4 cv=G4UR0tk5 c=1 sm=1 tr=0 ts=68f7f67a cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=x6icFKpwvdMA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=TeyyAU4cBfKQF1pE9E4A:9 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-GUID: kINHMvT26GlxbAlDiV4lxjUtAiWOn9Et X-Proofpoint-ORIG-GUID: kINHMvT26GlxbAlDiV4lxjUtAiWOn9Et X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-10-21_03,2025-10-13_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 priorityscore=1501 spamscore=0 suspectscore=0 adultscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2510020000 definitions=main-2510180018 Fix the code style/format issues reported by checkpatch.pl script. Signed-off-by: Kamal Wadhwa --- drivers/regulator/qcom-rpmh-regulator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 9f693043cb87aa77a7a529b5b973323450db80be..6a36ef967d5d9e32c005e79a120= 99ebef824842f 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -109,7 +109,7 @@ static const struct resource_name_formats vreg_rsc_name= _lookup[NUM_REGULATOR_TYP * regulator * @ops: Pointer to regulator ops callback structure * @voltage_ranges: The possible ranges of voltages supported by this - * PMIC regulator type + * PMIC regulator type * @n_linear_ranges: Number of entries in voltage_ranges * @n_voltages: The number of unique voltage set points defined * by voltage_ranges @@ -387,7 +387,7 @@ static int rpmh_regulator_vrm_set_mode_bypass(struct rp= mh_vreg *vreg, return pmic_mode; =20 if (bypassed) { - if(!vreg->hw_data->bypass_supported) + if (!vreg->hw_data->bypass_supported) return -EINVAL; cmd.data =3D vreg->hw_data->pmic_bypass_mode; } else { --=20 2.25.1