From nobody Sun Jun 14 23:04:17 2026 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 C7B8832E696 for ; Mon, 20 Apr 2026 15:43:52 +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=1776699838; cv=none; b=PDSAWdakgENcM95sL0m76CQQar0b1juuBmW7SIFwD593Erm/PIatTO6MNcKZn7+l60JsDwO9ia77NAxz5y3HR9zM5Tb3s760k228pfCPTMemO7izhhK1G0AzT9zIAi5K9ZiOyq22KBbSJj7MOsW2JwA+layyte5KSLsLwQPHhfs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776699838; c=relaxed/simple; bh=StTSG59tnpNuMU2uPSZoLQzqbsMyq9fwcMZjiEpdg6Q=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=NLEzJGEKa5JJSTPDN+qDsqzhvVKJkdtxEFdiiVIHpeLT82uk/INEP2Rgbdft83UQf4yeubHmZivC4tGFk6JK1ycL+ZCZahTyQiLzrhNT/Lnzbs98+1P9TgV/9mXlg7dxhfXzHkRiksfZMp/9Guo48moKCHyNyQwmsKNis492Jxs= 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=dIMwr4B8; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=aqsxUFYA; 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="dIMwr4B8"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="aqsxUFYA" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63K97rhq1600315 for ; Mon, 20 Apr 2026 15:43:51 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= QPBEl2EmLgl2bXNI31IZObAQEh4tI8eXiCacsAP7fp4=; b=dIMwr4B8cfSCNHx9 qrucKs3TxvUTQlQKmbeNjhui0ZzxHpUsGscXjDagruIGdJrs+bImVrjDOyJOzlHV tZh0QfywKhmw3xRb6B0uiMKJEMv2AbBx6IP8z8/sWkXOw4urV4VrMaXjJEEfKoaj 1pWpKOWCqESLc38vywI6CXHa7pA4IzMeyN6NlD7z5ps2FTpqplMAYGDn7IFHtfXO gfDhmA1Tp9ENEh5En1SlgQq+vbrMtRQhGwhMQQTIvdQEyve8mBOqnIa7v6kxAqWN wv7ujUiFm+dfPITE829eTvr9KWr8EkVHdzEo5tovlgBkDUGtrwjZtRuRRa1vmf+3 lLbRSw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnh899epy-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 15:43:51 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c76cb2dce57so1847939a12.1 for ; Mon, 20 Apr 2026 08:43:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776699831; x=1777304631; 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=QPBEl2EmLgl2bXNI31IZObAQEh4tI8eXiCacsAP7fp4=; b=aqsxUFYAgS5VF37A9TBdwZGNRzVXuWnZ+zR4Df8smW4qqr9uZdXKf9SZqyUyt6zJza lpynYCt6SnAnzzXUAW56egmNPGhtsv/VMvOCc/x3KXsKu+tegl3olzEEkhb+cNFW45l9 +0bTJRQZ8FnbFRyr4FUCa4obDUOO9uiAkegTTVBX0CSHn+TV0Jxd0klp+b7BLgmN1ute 2kQQjmoSUhHXI/0V07qsIdE8G09aufQanozZ9xWbA6JVKAOJFavZXbhZPP93CzhCZXZU gKP3Q+UJNW5L6ftTzLhRxLas0PXdgtes0wOAIFQBg1rjBVS85rfKoX0M054G+A04XGgN 7V6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776699831; x=1777304631; 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=QPBEl2EmLgl2bXNI31IZObAQEh4tI8eXiCacsAP7fp4=; b=dURH7NQZ3fOcxGeihAvsb4v/RJlVbWvl5t4mCh8bKbui4roVvWeEjIkubk1gEx7ika FdqOabyr4Z1zIL2TAnBu2e5BkiY9emVTdGUlwNb69vA12RFeGRXl59hkghxc94APs4fl 28m2Io0lWIr9syRrDaFfNjVfmTxWdVzlvNpdj1mJnSpUQLDv1ZcJjtAqAhNVDDZe1asQ Bn/hr/vG+a96G+9F+csHiIbuQZT57XV06ZviDmf0cw7L8garUh2+12VIFvWb0XOPgBzf aUg26eXka7RCJ8y+dxw5jbDBGYn30FugAGgWcWTvnx4TpdYR2E6ZJvwMoGQNzCGdVmDv 7JWQ== X-Forwarded-Encrypted: i=1; AFNElJ8gcYG+JmSSYmKG1b4j5ZPR3GWK36HtOpelzSbSb/Yct/3lsm+qsQfrb8uggbhViFp5i1V5oLhrtjyIiTc=@vger.kernel.org X-Gm-Message-State: AOJu0YyZxWMpiiumT6hRaQnRH58454nfA7Gcb5uaxepOrqBwhE+fSbse JLSkfTQAl3rFPlBpHK2IrxLRo9I6AGmOizaIRmMgA88CeHZZc5NzlcJw2KGQhxybWIgnq3LbRZC QuZv+KuU1gQ6dP37tgu9s5EmAEMQBu4G3MefwR1zs6ytQcDnpGhELnXhhpr/0OB1mZ1w= X-Gm-Gg: AeBDieupkccmAcBI4f2y4g+bTJmp0z5BGNDi6g2VjugBfUN3JTQO6+OwB7/gudv4e0i x0+fMdB9AkjV5YguKnjwiDB4P+2S84nVbRAYpEctCxern7Dkq62jdT+f7abUifrFMbflfGPGyiF BPIiJDuj86Jwk21M3EaPhrI44hzvqcaDi0Zh9/sQDdOmhVRE4oxbo1Fv11CIqEu+NhXbQKxhLxq 7/hs5l9izeTvX+PAKTIp/qHqf7JtoKFp3YnDvjCH/pgfcDRl8mz4961QGO6WBGKGeFioao8ZIPL uLaghlut6fKmbeU5MMQq0w2/9Hmou1PBQ1HmZENn/+P7BWMGof093kxC5+/BXI1ZZJ4Vv5qKgsQ +pCq0XPP1ti2oxOgU08AkxLHydDlfe3kX3yDKGU/ybzH3rnwaBScNA+iCKY/fgA== X-Received: by 2002:a05:6a00:4104:b0:82c:e9cc:f62f with SMTP id d2e1a72fcca58-82f8c82eab4mr13757356b3a.7.1776699830593; Mon, 20 Apr 2026 08:43:50 -0700 (PDT) X-Received: by 2002:a05:6a00:4104:b0:82c:e9cc:f62f with SMTP id d2e1a72fcca58-82f8c82eab4mr13757329b3a.7.1776699830064; Mon, 20 Apr 2026 08:43:50 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9cbb28sm10533230b3a.13.2026.04.20.08.43.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 08:43:49 -0700 (PDT) From: Kamal Wadhwa Date: Mon, 20 Apr 2026 21:13:38 +0530 Subject: [PATCH v4 1/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: <20260420-read-rpmh-v3-v4-1-70c152e6c958@oss.qualcomm.com> References: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> In-Reply-To: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Vinod Koul Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa , Maulik Shah , Konrad Dybcio , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776699822; l=7742; i=kamal.wadhwa@oss.qualcomm.com; s=20260406; h=from:subject:message-id; bh=fRLcFvxj66tpmAimv/ORz07g8Vv0sri2zroUI4okZes=; b=Xx92N3VspKFLJzgH0CnIJfJPFgOrpt2mCtj8Qa7ZI4Uh5ODlSqcp733FDnT2QDATTqXb4omQb zbOzcfvq7JMAbhPgHhVM4qLidBeSmmmON+VDLySHJ89xuhNWmxL6110 X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=ylH1NxUZkBpYsmww89g6zVxpS0q8qthtzcORkYxn/Ag= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDE1MiBTYWx0ZWRfX32i3rNh3vX7J L/vE17cGxZUiWWJpTWEcjWe+T7DRvbJx0F0E8eWS76KeMY5RHTpwo3j8AAbMf93142r7jwMyRHr TEUC0XG1j7FgJFaBANN2V/8R691ZwebWKDpppyONgIy02o6d4bvoYiHeLrI39RmyEoZTGkDaRAE BFfWp/hqY0zU/Mwq7nSu1xOy4qNCuMsUD+W1lhH70/1DPBhYqBdFVug/uhYSIQirZTSv/fiGK/c 7CqliJ0ykbccewgd9Pbeesj/WByP+atEWzf0+SnnR6327ui/+6hxs0hB6y8YrjLJGjHXdukQoW2 2GcXOAfJErDDsSqIGvci52zU5cdd9AqtEOvOEg26cHRkQN34YcyXjye+XgMyp/3PP3Dfk6m22UZ GrfX6xuMD26IoXf16su4sXwrXc7Dz8bkKMCEf78b046JCzRyKcwSz1ZLEw6E7Z0k8i0rNAVaRUl ZJcBjY34hJ2h96H5GSg== X-Authority-Analysis: v=2.4 cv=D6B37PRj c=1 sm=1 tr=0 ts=69e649b7 cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=RgaPuue0vXMEEcOqpiYA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: R9Z_DZgVTLZRGlEmeE3kal2hxriKeuDd X-Proofpoint-GUID: R9Z_DZgVTLZRGlEmeE3kal2hxriKeuDd 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-04-20_03,2026-04-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200152 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. Add 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. Reviewed-by: Konrad Dybcio Reviewed-by: Dmitry Baryshkov 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 ca37da3dc2b148c76e50e25885bd85a0cb47c9b6..f881c4c757ec8302b09eabf2f18= bc79941a6f2c5 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. + * + * Context: 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 Sun Jun 14 23:04:17 2026 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 873203382F4 for ; Mon, 20 Apr 2026 15:43:56 +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=1776699837; cv=none; b=nvaPWuwys57SKmmXep8c9bUwxHajcP+MyZUNckkI2DMEfTdbvQsYwbe0Yu2drgMT1mZfjC1c3VYqrH9C/DJCXeBA5TsW+akLKCsgbJ++B2t9kYiE/YpI3NtDUPumvF6TtRIHnS9ZwixAxQPIM7kHBNLN9Gi3RF5e+6yvLRqZc04= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776699837; c=relaxed/simple; bh=fP/3X5CDFCf374rNZnQoyBTi3/cS+io0nAmAc+HyNT4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=j/NrtzXKdaeT1LptSPJGxvyREG8cowgD0Xjwoe2QP1P6PaYCKV4bYjksdsUBcZl6taoVuBwW7wZrqL+q8eQmZhfHDi30jANS+fJluc0y+Si0MKKPcPUm0txma9AFfsq69k2LIFu9nHk712qLIAwb0R9/Kb474R6TuPM+Uge6Vuk= 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=nKWLJx3n; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=MrOqQYkV; 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="nKWLJx3n"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="MrOqQYkV" Received: from pps.filterd (m0279873.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63KFQjAK1599908 for ; Mon, 20 Apr 2026 15:43:55 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= ndPwvrWPsmLFsE6MRGoewd+OlexaiD9Dkxdx8vNMAmo=; b=nKWLJx3nbaBjrwYZ YAzwkkKtKkZ87jeU+t53LfN1jcC87VgftGoE6A7chPgSXwiJF2bQLZP/WpzQBpYn uW0bhp7OC2QAUjxYwAvtVWBQnWr4GKe55LdrcHbaIWt9Ksu8V6fhagAwKzqoBcSd ezcD2priXQtimF7c8wCZj2htnpmhuuwHDllexMmWYylsCHRyOXFo1YK0BwvyOti4 +07EP9ovh6Bp99e2u0Xga64YxPg4ohXOXBoF2pIClc6Y79K3khHex+WaPh4+b5TB mRzaHPKcYWVbo4lbUG/9GXnigHczpWF//nSjk23ECnRvrjf9xCRdESi5omnC/MpY TXAp+A== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnh899eq3-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 15:43:55 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-c76c6280732so3448849a12.0 for ; Mon, 20 Apr 2026 08:43:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776699834; x=1777304634; 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=ndPwvrWPsmLFsE6MRGoewd+OlexaiD9Dkxdx8vNMAmo=; b=MrOqQYkV3PSSje5IAA3stYpPEipG303+gSZlnI0oehA8o6muYr7DSmpT/qe2isN+us Wz4UAVFAGxdZXxlKtSoylcnVBc/rSazqa1Ao70H1+R1/qh18myaRAY3FfwoIskdKbosB PdgdMRZIOSzninlBIYstrkdHBD6khlEV8Zmom8nUXVsRs585/GC32bFNpYhYJe+SZ4N1 WwPXj1jHrAmPyexghMnONSEe8ttj/m1E/e4B+M3r/bibEvVPnnxH9Gb7RVZLFllkX/5N BsyNb5Of+4Vc8doeGqeNHdCfFXJNq89Y0w7l3Swi5IXQn8gmvpQCHfRD2iPvqDrW4T3V er5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776699834; x=1777304634; 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=ndPwvrWPsmLFsE6MRGoewd+OlexaiD9Dkxdx8vNMAmo=; b=jHvZxNNipnphz5iOGwoM48JQ7Aw0vvyy0JHzBoZISLbvT9sA3yuDhiBqIWY6Mn2JQ4 /pLz+FoUrzYezYXW57j7r/+GRApZaJEnyD6uTxBJrWxVeViG9q6qIl5VOaiwuDUKcUr8 +6ciVIer/NhQZJKPeiIqEp0n1mEKjoOGn0X/rAoCQUKT3ZBxRVkMpLVWKofPFJikwKbV lRm6Xv5bVDKn2yuIVgRiAau21MTE+3aPrun8n+O6NhbBB5r6NjDqWdMr9mXxCwepeQhg 56GCexBAnuC2z2xRXN39keBLT1wJDxIbazbqbhXbvS987l0h3qgwJ0e/58EoGC39U/78 v1OA== X-Forwarded-Encrypted: i=1; AFNElJ/aeXLvpBnIUByj2bNLXPGtSKpHnwNRZO1zOsiWTTabo+JsDNQbwjVnbenE8Nk4nDh6MWv7dPtjgcgFaCA=@vger.kernel.org X-Gm-Message-State: AOJu0Yzw9hSmvU+2AUS8/aZrG2+MkNiqXGxLku5OA3pN4VpnAnUSxDq2 pT6O0qgCJ10mFuzAu5VIaiJUP583lmsH+W7N/4OtL+EFkCUN3aSURY7T3ZKrmukmivHcfuuUIvU Bp1GM58ZObZ/g/MlkaQsMB7iOxxn232ym8esB8YFEA+dz+LP9vWJfV5hXYFfu3gRd64U= X-Gm-Gg: AeBDietq9bzPse/P8eJBj32AM+P1lp+mqLBlKQjTKU9wf440s1t9T3R4CqGDmrV/RL8 sMqPUFnayssytQjm/piLG3aB4qrl5r2MRdwRx2j0U5GAht8orEn+dlivBpnwoJes8SkUTTkUhvR BpaykEv5CrruuBwVA5+W2v8ShNHFahAJLaKQZf9UEfe4w6EhjnpFFxgVyuEp57mt5IJurR6xMpm 1+1oewR8Ro8TuUrVm9lw49Pyll2rCovrO8+0689jH1sOz3jQMhDQW1GCDq2sLgwSLyKCdMZPdkC SOJd2HziZSUJj9ijLxEBtfDJF6r5UKxB3Mh1V+0IRb6ujdQslNdSrY3NvA43gtLaTfux6Xw8Bih 8eJ/fjyAzLylE7e56XqXFlk3/M6Uppa6Q1ubrIx56N34slD4LN+D1VpqF72l94w== X-Received: by 2002:a05:6a20:431c:b0:3a2:dc51:445 with SMTP id adf61e73a8af0-3a2dc5106d7mr1715250637.36.1776699834230; Mon, 20 Apr 2026 08:43:54 -0700 (PDT) X-Received: by 2002:a05:6a20:431c:b0:3a2:dc51:445 with SMTP id adf61e73a8af0-3a2dc5106d7mr1715224637.36.1776699833732; Mon, 20 Apr 2026 08:43:53 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9cbb28sm10533230b3a.13.2026.04.20.08.43.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 08:43:53 -0700 (PDT) From: Kamal Wadhwa Date: Mon, 20 Apr 2026 21:13:39 +0530 Subject: [PATCH v4 2/4] regulator: qcom-rpmh: 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: <20260420-read-rpmh-v3-v4-2-70c152e6c958@oss.qualcomm.com> References: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> In-Reply-To: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Vinod Koul Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa , Dmitry Baryshkov , Konrad Dybcio X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776699822; l=2619; i=kamal.wadhwa@oss.qualcomm.com; s=20260406; h=from:subject:message-id; bh=fP/3X5CDFCf374rNZnQoyBTi3/cS+io0nAmAc+HyNT4=; b=GeYjH4O3ZlKAD8rjvFalQvjy8VEUaObhUtnwH/hoICpO1SIX90OZvyavPIfSXz3H5MNEF8eB8 wFkxZEXqaUwCEXHEbJQndq/7VuA764VsktIeZ4IJchSBzK3xIk1HB+p X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=ylH1NxUZkBpYsmww89g6zVxpS0q8qthtzcORkYxn/Ag= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDE1MiBTYWx0ZWRfXwq4k2kiuGZ4+ X2Zqlkz6mnRwFv/54pccQ98QQoaBcfIYoD8qwC0Gn14mK8yBMjiQ3tMSKfeS1BYYmPVFWbJ5EWq 89Jn80Jaf9RA2hrAwZjnyIwxJmaNmHPDSVSBG5ylfm4qcDUPHfv73q22uA1tGN1pkgsHdnbTwhT WdU/9tecxug8+FXvvYwyH5J4aiiKl/HN7kXAhMB013hN0gaRGqxSzItOb/7NVcA7j3mpzoWox/s msbkhnCUjnDlqhxoEyM4yAKiOz/8FkcqmBzhFESEP+H0b8yAmBFkCPGtCxtkGwbjwukJ7k5YgJ2 nKUzZAQQ4zBAna7bpaG+KpKNylomA/rMgklAaw19T/aEjxv4rmyienM70jrjVI9yCQd4m6YS96S 2nHT5DFDTQW0/jlzkpsfdzd3mW8n32SyHcuHgN2blCuOXhJuz7HkXpurCap0QeA6oxP8t9HyIAR kZhtodPAJMpme+3gJdg== X-Authority-Analysis: v=2.4 cv=D6B37PRj c=1 sm=1 tr=0 ts=69e649bb cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=EUspDBNiAAAA:8 a=W0IsM1cLceJ2lu2XXEMA:9 a=QEXdDO2ut3YA:10 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: HI7tEc1zzKfGjAqzdDInKezSSPP2AUOZ X-Proofpoint-GUID: HI7tEc1zzKfGjAqzdDInKezSSPP2AUOZ 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-04-20_03,2026-04-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 phishscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 priorityscore=1501 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200152 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 parameter`pmic_bypass_mode` to store bypass mode value. Use it to send correct PMIC bypass mode value that corresponds to PMIC4/5 BOB regulators from the helper function. Fixes: 610f29e5cc0e8d58 ("regulator: qcom-rpmh: Update PMIC modes for PMIC5= ") Reviewed-by: Dmitry Baryshkov Reviewed-by: Konrad Dybcio Signed-off-by: Kamal Wadhwa --- drivers/regulator/qcom-rpmh-regulator.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 6e4cb2871fca8d7f371660ceb0c73a092507a5ce..85fbf10f74bb3393071bc656813= 56312f27b7527 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -111,6 +111,7 @@ 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. * @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 +126,7 @@ struct rpmh_vreg_hw_data { int n_linear_ranges; int n_voltages; int hpm_min_load_uA; + int pmic_bypass_mode; const int *pmic_mode_map; unsigned int (*of_map_mode)(unsigned int mode); }; @@ -311,7 +313,7 @@ static int rpmh_regulator_vrm_set_mode_bypass(struct rp= mh_vreg *vreg, return pmic_mode; =20 if (bypassed) - cmd.data =3D PMIC4_BOB_MODE_PASS; + cmd.data =3D vreg->hw_data->pmic_bypass_mode; else cmd.data =3D pmic_mode; =20 @@ -767,6 +769,7 @@ static const struct rpmh_vreg_hw_data pmic4_bob =3D { }, .n_linear_ranges =3D 1, .n_voltages =3D 84, + .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 +978,7 @@ static const struct rpmh_vreg_hw_data pmic5_bob =3D { }, .n_linear_ranges =3D 1, .n_voltages =3D 32, + .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 Sun Jun 14 23:04:17 2026 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 0974B33AD91 for ; Mon, 20 Apr 2026 15:43:59 +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=1776699842; cv=none; b=TPG362nS2aNf9dAb9tOgbNmoZ8ILX4aDd7EO4Ty1Dp43wLwoP5xPDrtCQUPNxAV4pZL0JOKmTEImz5HbSc87U/w/Khu5AOtB0tX9A6gKYb447c7tTD5Zu108ZcUMQHF/OpkYFsI1bu+9LiArREgV6l6hAVHvdr56FXTelx0pTZo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776699842; c=relaxed/simple; bh=Hq96TCkrNAk+nIwzsh/wJnzVo8+VTfX6cYKH0fAOzjo=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p743yUdj9/rCjFPQHRcXc4VUwIjsrV8th+8u4b8Eng/5LhCrd+hLNiKW2ibkh63NNEFALLZ94s22OIyxb/taXr/CO4ZpyCSKEVrOwKQ3osmFGjDig94rLXzAcoICHWTYO74vJcYuaHg36npzgOrd17sFZcMbzN1mhTbzzI5rDhc= 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=e14QeWO/; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=L2mArInD; 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="e14QeWO/"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="L2mArInD" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63K97RKX084485 for ; Mon, 20 Apr 2026 15:43:59 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= IQ+L0PhdbxHQr4ISeIqjXzA+0fOsr/ypPkuqaUU9Vbo=; b=e14QeWO/TFeeCsG2 VnN0YmRq0pLnI9Cm6Ru/ySPbpP+y2ocJ8HrksQIkYZAd0wicDannAjl/DB0C6usm uRqQsWKLij1m1r4PI523bjto2ZktL7J2LXoxVtCStZC58qLR5B7PzUbzsp5fAxBA wuWYXWLnR5oZksMfiajuOoNerMU+R2WPPQ8Fq0WFtkXN4BC2wKk4lHawecHAYDFS rR5zM75muHMRPfk91Yc5rdS2mxNnDb5zAAESnaqpQfuM90UAwpU5+Wt0XL3HmS4k oXgGPTJMXgU0W0hjau4V+Dso08jy1ryre0Sm4p1Kv8tCs0azLdMzhT8AV2ELs4UL P3tKaw== Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dnh81heqb-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 15:43:58 +0000 (GMT) Received: by mail-pg1-f199.google.com with SMTP id 41be03b00d2f7-c76c2bb3149so1455912a12.1 for ; Mon, 20 Apr 2026 08:43:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776699838; x=1777304638; 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=IQ+L0PhdbxHQr4ISeIqjXzA+0fOsr/ypPkuqaUU9Vbo=; b=L2mArInDWYK9EUlcFz+tm/uDmj0YXK7iS+xOod5pxtXPXiokzmmitPhga4DcUJq2v3 QkD/9hdhg2xtRlxDghwMJnj3W6dOdpBwbPSecsNEFMliL+TN2yVCfgA6BOpNXJAOzapS BFrkfvrFmLaNcuRpqEbxwmuQ5hp3DQktze0y1dZtksW5bmM7kCte0eErBZBa+7vhFEZ2 tLCO29fUTqg4qEUVc+vJRRnh8vqMy/iJy884XL5/DLMGg/5t4HzWRbU/iotE+MgEp9dH CsNr/Bt1AJkSt30wVH1adgBQ+lu6EWpSzDMIkU8bY2/nfoTBnwR6m6a9rDf5SUTDNY62 uI+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776699838; x=1777304638; 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=IQ+L0PhdbxHQr4ISeIqjXzA+0fOsr/ypPkuqaUU9Vbo=; b=dDHmjO/lZgonGmiBB6sfjiNsY3CWsrZ7YvRE/D2ofDAT3DcOawtsdHG1hG4NU2fqxU 6DMjVdaqNelFZtGbJqmNOJsiPN4OvNtipCUvd0gQJ8T8gwxcoX4emOOhqiRnl3FkthpA tPvYN8GRJdz9eNBIJ7bWoOJtkwcKiMI+NLSL8cY5Pg7mK8SQtK1gg22zJc6rekdZ+cNZ IP/gaHM8RTTi80IATQOavQRuoZYSakbnDCdwadUqmRzHVwkuYG/29S7DAbf+Xdh6xSU4 kACf0mTMexCV/Upu/YRjf952Y9H6hrvGhZv1GBI2J6Z3+67Gihg21s038W9rs4WT3T0h uNxQ== X-Forwarded-Encrypted: i=1; AFNElJ88y2rpgNSISLWlVT3Hbjjh/0mYE65rUnGmDd15T6/MHMzJW1Eva9QiD/7+nECLNZExOHeYrDcxybdHZDI=@vger.kernel.org X-Gm-Message-State: AOJu0Yz1/EC6Y37CnLwd15FgtRSbj26NWjxj5kh9Yw+Y++pMAj+WZf9u rfcm8on+twIb/T2sFqK2SwDingM+abKmGpk3/tlX4F7CsnRwlmsV3IqD9OZUSMgnxQrhS71DoVx Cy8LjtLbfnuA6sznLEEh1tFKHUTSSPmx9V0zAxcUVe2bkgHWMqSltLh/sm+J0xxaRg6c= X-Gm-Gg: AeBDieukCAmjPs0l3HLUuW3eNdn8dFpujPzjhteZukcDWFDdjFsCxqx7xEY3tJ7tBk4 sALLN3Zts8iSKW5c3UDOH2SDIDh5Ts4DW3n/NojI3C6pjc9VpBHfxJGkyQcrmT6bJpybPfPg2Ke gUfrbAqbwi0ijgZk6kajzvMFdWuU9aalGZBkOIXFfYYPkQ75ZsDPK+67LmRBiHD9s75LKy3tHDx UPgjaTaH3eLQ5hkyCPbS1No2P955zEsXbtCDPuv/8t4hudbvIexgMgdb3v34xwcR+ZMzORWaVX4 3NTWKYT9+Cg9vBh42HlVFbZCFFpF2Ii8m3Nf4m+chpbIu2WS/3h3pnNF+dp27r3ANE9mZn2M+PV 2kEIRKCxPBXqGyMDl8sXiaEDfGoz+kXmuHuxZeHzgyS5il4NInPu0PLh5Q9ymBQ== X-Received: by 2002:a05:6a00:a58a:b0:82f:3017:6168 with SMTP id d2e1a72fcca58-82f8b322ec3mr11320697b3a.1.1776699837555; Mon, 20 Apr 2026 08:43:57 -0700 (PDT) X-Received: by 2002:a05:6a00:a58a:b0:82f:3017:6168 with SMTP id d2e1a72fcca58-82f8b322ec3mr11320677b3a.1.1776699836857; Mon, 20 Apr 2026 08:43:56 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9cbb28sm10533230b3a.13.2026.04.20.08.43.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 08:43:56 -0700 (PDT) From: Kamal Wadhwa Date: Mon, 20 Apr 2026 21:13:40 +0530 Subject: [PATCH v4 3/4] regulator: qcom-rpmh: readback voltage/bypass/mode/status set during bootup 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: <20260420-read-rpmh-v3-v4-3-70c152e6c958@oss.qualcomm.com> References: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> In-Reply-To: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Vinod Koul 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=1776699822; l=10320; i=kamal.wadhwa@oss.qualcomm.com; s=20260406; h=from:subject:message-id; bh=Hq96TCkrNAk+nIwzsh/wJnzVo8+VTfX6cYKH0fAOzjo=; b=kCi41cImcgixPZQicPEKNUV7UyQQ+WsfOIOPi4BZOTQQnaId10SygIozV+9a3dbSeRyGrFbM1 rN6j8BcuiQEC1r4fFE3Sr/P+xXWTRGV5sUOMsKy/j6o093GtiXZgFEY X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=ylH1NxUZkBpYsmww89g6zVxpS0q8qthtzcORkYxn/Ag= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDE1MiBTYWx0ZWRfX0gkMlVXZpJIm ccDsVerjSvsHWXyRuLaWo6luDKuRWwU8V4BX30jhG6QEostMX7Hqw+QI2SVPUXM5WMzGiWcVaf3 61P7QX2LCJs43o9CFGPhLMra2jBlpKYhmLoQqHrdG4Mi1XHCW8emfJyEYlDmwvnW/Di0uwtxlho REA5325McQEshc71FAmqDXkwbmsQpvUB+ybh2mr72tE5wgsy/yXAKc81D2gj/pAZNhvYsMikshR ShVASpvx2qqezJGE5ygtGOpHofetfC8/b2GX9RBAhu8c3JgQm4u2qegCGi2+ye/j4ULgojvE+oj npYNE3HxbTHIgPw0jiU3lo4UJ9liBcVWQNGptceZe/jwRsgT0vNHh6GWq2YlwAEq0O1kWBsKpWs AtMEwHa6zy9y9xB1s/U23OiNg98yNfcI+N2JVkk1N8s0DsSBURkJYYgAlOrMjVPPOuzqb+aNjGi wEmKzvhx9QPygEYTuqg== X-Proofpoint-GUID: 5RdYQNfJRpvj2Lv1zIH-1rDFa3VTVNQM X-Proofpoint-ORIG-GUID: 5RdYQNfJRpvj2Lv1zIH-1rDFa3VTVNQM X-Authority-Analysis: v=2.4 cv=PsKjqQM3 c=1 sm=1 tr=0 ts=69e649be cx=c_pps a=Oh5Dbbf/trHjhBongsHeRQ==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=tHHH2asN0IuRntgD_GYA:9 a=QEXdDO2ut3YA:10 a=_Vgx9l1VpLgwpw_dHYaR:22 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-04-20_03,2026-04-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200152 Currently, during regulator registration, regulator framework sends an unnecessary `min-microvolts` request for the rpmh-regulator device. This happens because in current design, we do not have a way to readback the voltage settings that was set during the bootloader stage. Fix this by using the rpmh_read() API to read the regulator voltage settings done during boot and make it available to regulator framework from the very first read after the bootup. Also use this API to read the status/mode/bypass settings as well. This will provide the regulator framework a sense of the initial settings done by bootloader and thus preventing any redundents writes for any setting post bootup incase the same setting was already applied during bootup. Signed-off-by: Kamal Wadhwa --- drivers/regulator/qcom-rpmh-regulator.c | 179 ++++++++++++++++++++++++++++= ++++ 1 file changed, 179 insertions(+) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 85fbf10f74bb3393071bc65681356312f27b7527..1add15d73cac67ad8c0b45aaad6= fb2ae9b388180 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -14,6 +14,7 @@ #include #include #include +#include =20 #include #include @@ -61,8 +62,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 GENMASK(12, 0) + #define RPMH_REGULATOR_REG_ENABLE 0x4 +#define RPMH_REGULATOR_ENABLE_MASK BIT(0) + #define RPMH_REGULATOR_REG_VRM_MODE 0x8 +#define RPMH_REGULATOR_MODE_MASK GENMASK(2, 0) =20 #define PMIC4_LDO_MODE_RETENTION 4 #define PMIC4_LDO_MODE_LPM 5 @@ -154,6 +160,7 @@ struct rpmh_vreg_hw_data { * @voltage_selector: Selector used for get_voltage_sel() and * set_voltage_sel() callbacks * @mode: RPMh VRM regulator current framework mode + * @status: RPMh VRM regulator current framework status */ struct rpmh_vreg { struct device *dev; @@ -166,6 +173,7 @@ struct rpmh_vreg { bool bypassed; int voltage_selector; unsigned int mode; + unsigned int status; }; =20 /** @@ -210,6 +218,28 @@ static int rpmh_regulator_send_request(struct rpmh_vre= g *vreg, return ret; } =20 +/** + * rpmh_regulator_read_data() - read data from RPMh + * @vreg: Pointer to the RPMh regulator + * @cmd: Pointer to the RPMh command struct to readback data + * + * Return: 0 on success, or a negative error number on failure + */ +static int rpmh_regulator_read_data(struct rpmh_vreg *vreg, struct tcs_cmd= *cmd) +{ + return rpmh_read(vreg->dev, cmd); +} + +static void rpmh_vreg_update_status(struct rpmh_vreg *vreg) +{ + if (!vreg->enabled) + vreg->status =3D REGULATOR_STATUS_OFF; + else if (vreg->bypassed) + vreg->status =3D REGULATOR_STATUS_BYPASS; + else + vreg->status =3D regulator_mode_to_status(vreg->mode); +} + static int _rpmh_regulator_vrm_set_voltage_sel(struct regulator_dev *rdev, unsigned int selector, bool wait_for_ack) { @@ -248,9 +278,42 @@ static int rpmh_regulator_vrm_set_voltage_sel(struct r= egulator_dev *rdev, selector > vreg->voltage_selector); } =20 +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_err(vreg->dev, "read voltage %d is out-of-range[%d:%d]\n", + _uV, min_uV, max_uV); + + return ret; +} + 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; } @@ -284,6 +347,8 @@ static int rpmh_regulator_set_enable_state(struct regul= ator_dev *rdev, if (!ret) vreg->enabled =3D enable; =20 + rpmh_vreg_update_status(vreg); + return ret; } =20 @@ -333,9 +398,27 @@ static int rpmh_regulator_vrm_set_mode(struct regulato= r_dev *rdev, if (!ret) vreg->mode =3D mode; =20 + rpmh_vreg_update_status(vreg); + 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); @@ -343,6 +426,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 @@ -379,6 +469,8 @@ static int rpmh_regulator_vrm_set_bypass(struct regulat= or_dev *rdev, if (!ret) vreg->bypassed =3D enable; =20 + rpmh_vreg_update_status(vreg); + return ret; } =20 @@ -401,6 +493,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 { @@ -412,6 +505,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 @@ -424,6 +518,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, }; @@ -432,6 +527,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 /** @@ -540,6 +636,83 @@ 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) { + vreg->status =3D REGULATOR_STATUS_UNDEFINED; + dev_err(vreg->dev, "failed to read ENABLE status ret =3D %d\n", ret); + + 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 REGULATOR_STATUS_ON; + + return 0; + } + + ret =3D rpmh_regulator_vrm_get_pmic_mode(vreg, &pmic_mode); + if (ret < 0) { + vreg->mode =3D REGULATOR_MODE_INVALID; + vreg->status =3D REGULATOR_STATUS_UNDEFINED; + dev_err(vreg->dev, "failed to read pmic_mode ret =3D %d\n", ret); + + return ret; + } + + /* + * NOTE: Since BOB4 BYPASS_MODE value =3D 0 we cannot confirm if that BOB + * regulator has been sent into bypass mode by bootloader or if bootloader + * just has not requested for any mode voting. Due this limitation, we + * must check if the read pmic_mode value is non-zero before comparing it + * to bypass mode value. This also is needed to avoid setting BYPASS stat= us + * for LDOs which dont support bypass mode, and have the pmic_bypass_mode + * uninitialized value as zero in the vreg hw data. For such cases assume + * lowest mode/status, if pmic_mode is zero, to allow for mode voting. + */ + if (!pmic_mode) { + for (mode =3D REGULATOR_MODE_STANDBY; mode > REGULATOR_MODE_INVALID; mod= e >>=3D 1) { + if (vreg->hw_data->pmic_mode_map[mode] >=3D 0) { + vreg->mode =3D mode; + break; + } + } + + vreg->status =3D regulator_mode_to_status(vreg->mode); + return 0; + } + + if (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 REGULATOR_MODE_STANDBY; mode > REGULATOR_MODE_INVALID; mode= >>=3D 1) { + if (pmic_mode =3D=3D vreg->hw_data->pmic_mode_map[mode]) { + vreg->mode =3D mode; + vreg->status =3D regulator_mode_to_status(vreg->mode); + break; + } + } + + 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, @@ -1823,6 +1996,12 @@ 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 Sun Jun 14 23:04:17 2026 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 24CA3334C39 for ; Mon, 20 Apr 2026 15:44:02 +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=1776699844; cv=none; b=FaclyV8NsN77cSVgn70tsOd0NRHYlAoxKMumQjvRDHynQ8MmaHi35OW2xJ1T38ThP6C5kjwUrZ35mp0KG25QsPHyWZqTU7q0KABtjMz15TmS1lFMZeqEQyR6Z6dW4DS5Zl88vYed+rhyg7IEEO0npEjvW/Btz57Q5r2UPZXRnc8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1776699844; c=relaxed/simple; bh=hceIvuPGmyPJbNLLQzC4kG8qVJs4lI1EpoadEbPZt9A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=sxAsXM6xWtYjcgupLJE75VL8SjxMlD7UYggywxqWt3Ggdpn4P+n9DRnont1mCPZrXPA+h+Ce3qGkLHo76ggPtQC4aG2RsTXZZCFbvfzqi851KQSP+eJmknAUbMLFdrkt0zA4c47bK6L7DhDOeKZWogCXa0QRNxXdwpfC2WyMkqw= 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=Fdc3dIm5; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ZD/rl8xB; 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="Fdc3dIm5"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ZD/rl8xB" Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63K97Rr6084489 for ; Mon, 20 Apr 2026 15:44: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= yUFr47Nbs2cw3/rwDSVbJGR/+YBpzMv9q1tJ7gau3U4=; b=Fdc3dIm5QBlMBgnN Q0AZyRJJUhi/CbJokyXM5+Iu26gTm445lKWOkMI73o+WNdFGqEp+uOCzdTTquFr6 gunKsD8XHxs988RQODXq1Q8qeJCF5x97ZlWxMFZXMe+XIz/UGOOs1ToyNGlxf9fs FibyyoOMOb80ySmcjnXVS2ZILo4K1D7FvxPSMRuSfBLpdb2+ulhqiUZ7CPufdui1 vGhSxY8Lsr73NqkC7nV+7fbxNplK3iwfdiUSzIJSnNRo+6mxOPX1wM+JrWTLmvoy jLGSffsHXM/Ha5T+dBYe/bAh6QSDjhAu1X44QoptwffGFCzeuj0wtiBr8zSpLZsW lvKEew== 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 4dnh81heqf-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 20 Apr 2026 15:44:01 +0000 (GMT) Received: by mail-pj1-f70.google.com with SMTP id 98e67ed59e1d1-35d9f68d00fso6329951a91.2 for ; Mon, 20 Apr 2026 08:44:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1776699841; x=1777304641; 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=yUFr47Nbs2cw3/rwDSVbJGR/+YBpzMv9q1tJ7gau3U4=; b=ZD/rl8xBO/gSQwG8+xzxiFc/Sh7ENIQVwEs6Xf2igCUwoKRaeG4KSC8Y49k6IWdov0 Vra84EXJHKiqdE1SXWf31vrXyFsyoDAf9AUvrB+MtR7nBc2GKOicKpCeatnylq6oc1YG q408ssCBfaI+Hu1+VCCrw+9/+uYUhOVHTLd8kbVlFTqyIuZzUjCMZ51j5X1foPdxKU4T m18RNlSEUqh8WYTyJ5Km9jn3NbPlTZ1s6MY+KbMJfMJIgOz1vtTpPeq24f9TkP9CW6qj MtIRBqVM5TWi1zKmgJpFpZJRGl98MxRP8spFHuTTprnLl0rH6wMM1P/Ey0za/4tMO9+g 3jGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776699841; x=1777304641; 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=yUFr47Nbs2cw3/rwDSVbJGR/+YBpzMv9q1tJ7gau3U4=; b=X1dcUjk7yFbyhmxfjYMcHFsrY7DOpgCVgHsTgnQ/gLYe8FFxkaqM5AT4Mdf+MPSgBP 0mggqVqqlyDVlxTnusA/Oy+2PE6fvU+qfNlasZQ0eFCB1HwLDSg9a+F6tY0VH3ssSQAi ynLLzFaTnWu6nuYKXK4iw2+Yt2phtbFzRQbEoqjHKipEbU5dskGpfGP8IM5sE+8hJrRs RIq60eLc+HpfcJHD1NJfILtlwmAZXex/A73g+gbP67gYETJEhuyHxo87+N0rQVgvKGo+ JyPzR8z16gMTcfTzJjm5lDcyf8vRYO33/iISSM0Oj1F8b+wI8fjxzU/m1e+GQQuMtoe/ pUgA== X-Forwarded-Encrypted: i=1; AFNElJ9fIiStZFh5jlaoNBK39icKPWTQzzhCYKyNKtagHmuuBVl8HvnDqoYaZMlLYoGDcZPK98tOcje5y1Zc1/s=@vger.kernel.org X-Gm-Message-State: AOJu0YzHR5ufcfgicgTpGpKkS/ypCP7N+g4yuGCjgp0qpBRQBt6h/FoJ O95ICpOSVFzlJGgveMKFI1SsRjaDMmrmwE48k0KYTfjTVxXodHjxaxkjDQio6wfiSfIq0XsEWCG naGc4L0Df2qj/JxLtSsi0N9ROPnOGa30qu2K6jPmmpiKWxhvcgvcjA3sT8hV3w1imMMo= X-Gm-Gg: AeBDieuVxOsSxr5IeqPyH15bGFcYhhTex2eIttUSu5ChJGoGHq8M+AqNpby9QlBu0dN HnLZBqoWr3J/lQMJY5hw/B13UZAD7KoBFQeBEgJjxRTHyt4hEeWIvAM07DfIDIGDdQ9wOfGHZGp jkNl7Cprl/I+5Lkd5dAAA8hYm6Zb6y/XXVZffnq1pH+xMww/eV/x5dETeSkFP+c5AJgUgnKKemi Ds+IUDqtPOq8MgR9bqOHXe1K8HxP8gNeC9JoK7h+UfwW2/7obP21z9Z5Gu2NR0kp9PyS/sXo65e d2qhEDmAGWABKMbSrKD5VP2yQ6Mtz+qxteavUOSZBojQk0sf8rIjUEcyh6uL8Q3rvJzMiQys6wE Ra0j5hv8f8kYkll28VMWbwov11wrayPyqn01njgHEzMEwUl0afI6mEfKdJF9DrQ== X-Received: by 2002:a05:6a20:b39f:b0:39c:4af6:4303 with SMTP id adf61e73a8af0-3a08d749274mr11616314637.20.1776699840733; Mon, 20 Apr 2026 08:44:00 -0700 (PDT) X-Received: by 2002:a05:6a20:b39f:b0:39c:4af6:4303 with SMTP id adf61e73a8af0-3a08d749274mr11616285637.20.1776699840222; Mon, 20 Apr 2026 08:44:00 -0700 (PDT) Received: from hu-kamalw-hyd.qualcomm.com ([202.46.22.19]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82f8e9cbb28sm10533230b3a.13.2026.04.20.08.43.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 08:43:59 -0700 (PDT) From: Kamal Wadhwa Date: Mon, 20 Apr 2026 21:13:41 +0530 Subject: [PATCH v4 4/4] regulator: qcom-rpmh: 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: <20260420-read-rpmh-v3-v4-4-70c152e6c958@oss.qualcomm.com> References: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> In-Reply-To: <20260420-read-rpmh-v3-v4-0-70c152e6c958@oss.qualcomm.com> To: Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Vinod Koul Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, Kamal Wadhwa , Dmitry Baryshkov X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1776699822; l=1066; i=kamal.wadhwa@oss.qualcomm.com; s=20260406; h=from:subject:message-id; bh=hceIvuPGmyPJbNLLQzC4kG8qVJs4lI1EpoadEbPZt9A=; b=Q5/8ak9O1QN4R6sYkw1EqNaSd3+Ysmsajp9vKoSUrqo2KfAd8GIFaFqKz5O8MzZ98BVl7Npog 3OHAa3QKDZsAaufIrmwB5eAvEZC4AjBn2aRTgpozqS43cH3bBgLZrYX X-Developer-Key: i=kamal.wadhwa@oss.qualcomm.com; a=ed25519; pk=ylH1NxUZkBpYsmww89g6zVxpS0q8qthtzcORkYxn/Ag= X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDIwMDE1MiBTYWx0ZWRfXyb1zAwgzEv28 r+5kwXlRNWWw5lT8JGEWFJKI6m2ufbDYORjo2l0k8Ns8IAH8fvdDAy/l1Hy+Ds1et9eRp4sHB/Y 18ygE8DPJFZiI3OOKxcXnuNY2EQC2JllF8b0QpfL0I+LjTxw/xaGVYEFZ6y/qTQUhdVfAc3tLhb aezWoZQoNOwrGp657vmJYcMvVN4updAk8Oqz3+GD+3KnZWPki2bjkeNPfSZgW2sZ2e4bnRDL5NV R0wdSnbNMAO2ogWNOr8W8etc6TVoF9GqOcW5BiwIh4DLgI8nxPYRsAAsGrBMkvUAfgwT2ayzzgY czE8Hli2cR+rA4yQnojUObY2KfqxxLI1ElK7v4ZtDZstxhYCHwLMxL1eqVdALCzQ7Q9k8aKJqJN 8v+a/hPTHxsZY9XJpIqGUcbuUmabDtEwEemf72tZ8MkPfoPlvEyJIWXU02NIRLR29n2z/nSdRwV 3Bow+9AwITK2n1SvBlg== X-Proofpoint-GUID: WY72-lJgj56HotBat4CVcFKys9hV2eDl X-Proofpoint-ORIG-GUID: WY72-lJgj56HotBat4CVcFKys9hV2eDl X-Authority-Analysis: v=2.4 cv=PsKjqQM3 c=1 sm=1 tr=0 ts=69e649c1 cx=c_pps a=0uOsjrqzRL749jD1oC5vDA==:117 a=fChuTYTh2wq5r3m49p7fHw==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=_glEPmIy2e8OvE2BGh3C:22 a=EUspDBNiAAAA:8 a=f4Ffjx35umjis5ac5jMA:9 a=QEXdDO2ut3YA:10 a=mQ_c8vxmzFEMiUWkPHU9:22 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-04-20_03,2026-04-20_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 suspectscore=0 phishscore=0 adultscore=0 bulkscore=0 lowpriorityscore=0 spamscore=0 impostorscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604070000 definitions=main-2604200152 Fix the code style/format issues reported by checkpatch.pl script. Reviewed-by: Dmitry Baryshkov Signed-off-by: Kamal Wadhwa --- drivers/regulator/qcom-rpmh-regulator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qc= om-rpmh-regulator.c index 1add15d73cac67ad8c0b45aaad6fb2ae9b388180..55e6983ed9b150bf8a4e47da467= 15d8d5081cf4d 100644 --- a/drivers/regulator/qcom-rpmh-regulator.c +++ b/drivers/regulator/qcom-rpmh-regulator.c @@ -110,7 +110,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 --=20 2.25.1