From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA44E3AD53C for ; Tue, 7 Apr 2026 11:16:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775560610; cv=none; b=K1eLXhiqV5pDiBUTMqm9GHLCDenKUGwFs32bTljqt8fwHVzL0heSpKy8638YKAJod9zHM8r1kwzq0el9e3zo3GM0t0FO1Qdu2tbxRx+pitVUBTDBs+ROP9WZRoWFM5C44NDU1TtDaKXujT+9duPYu+gSNb3yso3yqLvaJ8OzA/Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775560610; c=relaxed/simple; bh=XjZYpik5TBL7Me6+hcGALpv7NCK0LGyqwdGNHkUEAcY=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=KZws+2OU7BQZ/AWRp91FPTCw9RSk4oNTayJjCh777etOBeHHpAycUDW55vQrUSDIV9QJ/4Hkh2xTMOHJKuo7WGufZQxgXK3KUL9zMEvYYM/H0UOr5h1jUD6v1gEK2X7H5nmPnuQvM8CJf7K5q9WHACH4seygW0QRPyNH/sLDoPE= 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=cbMHfROR; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=A4a8f4gv; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="cbMHfROR"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="A4a8f4gv" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 6376RuHT2550324 for ; Tue, 7 Apr 2026 11:16:47 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= 0tMT9R83/dTxVTP1U1Cfj0fbDe2K8UZpLCbh3euH73w=; b=cbMHfRORdhy8+Lr5 WsFuwSuq7nSg6fhLoguE4mf4HSqjGtC/TxNn+JIMgZfgEbNPdbUg8QvcCjtyEK3r wb+8oEPdTyPdgYOXALJIZa6skgS0/kdi6tamz9KX8vKsGLOWOJru4y6DF4FSyIQP bvkQ+fMbHJTYL6Tmepc2PPUBNPm0/Fy7FV1hMo3Yj5/P+ss0+a6mOvxaAevno/+l BtJ3QpQL5IXtAUuiV0GKnbscT5ltpwgxlNtn1HmR5VtSFcAPt/C81YA3Cv/mN/dZ xbppOTg8Hev9lYFrHv9TZhcapN3fVM0QqZT3q2g8i57EJKO1QPc7yno8RGgEZvm0 Xu/Y0Q== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dcmreafag-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 07 Apr 2026 11:16:46 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-89ed6f0c71aso17380596d6.1 for ; Tue, 07 Apr 2026 04:16:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1775560606; x=1776165406; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=0tMT9R83/dTxVTP1U1Cfj0fbDe2K8UZpLCbh3euH73w=; b=A4a8f4gvOY4+fDxHBJxP2+fbGPAdYK5SYVijHrN0jNr2X3n+IhkNrK6f2bJjmH1/Mx m7j7w9sBNO93QtcqadQNuzl2AHaGu54JsZDpdF8WWFXeSxFBxCpmjT1TNu1XHpAqZHMq /qg15Wgr4u8gMWI7QbvzsHHMcpzYwGS9Mjk4aF+AATTJMYnLAcJViIV15+pdjkbA7kMo 1BaoMpj5qXpl4YlWBSPHKZoFDyh77vrg9Tvl1u4OiVCXFTYXY4W/7sZTcimUn06EK6YW AJWio56pqfmbfEa6TIjjWtaM/aezd4yMiRrBs1CkjI7EdV/MNlwwRGlmdU5ohHG09ROl OmFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775560606; x=1776165406; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0tMT9R83/dTxVTP1U1Cfj0fbDe2K8UZpLCbh3euH73w=; b=R5/S0F582Nwt0gLultbOLa4A12nSRyIHC5AtADVZl6ZAJRlF+rGS99hY581gGlThV/ GEzl1e4tN7h6HKBpMVh9mGgaBrZab8C0Mf5GINxEzNu4pFzf8Bbmba0vRG2KfjSP2m5n e1DmKdc2GzpCy7X3ngeSvY0m3/n4JUfVyJ3sF2WdGyMEt9vueveG8Wqzut11gqQw9Yia x6gVfugtO/jO0yDveoYNeNMZLLAM6nhqug7P8ogiPldNkCDeTBSRqE0AWPI1Yas/gu9P VFsOznLRNRR7pgFohqBOM5JruyV53GIsw4frXYPXuAX3wexPw39O5OrYX6I3Vob4PCvp a0/Q== X-Forwarded-Encrypted: i=1; AJvYcCXbWl8VU0z/ZqQZodQhgwo0js4wuRL+sQdgzMrZ+dGExJyKw7R54B/rttplEu2+7Gx5/IQbK240RXmONvA=@vger.kernel.org X-Gm-Message-State: AOJu0Yz8Z+ktDkRFH8oHcagv07Y/sJytLdoHXvMXWJFOyPs4WYlhN17i +ZO4B6mcScD8RFqaRKbhQBmgPAlV1x1q1gd55z4MJn46HtdGUt8FOU2TT1koPBU7X192pje2Udx nXzr/188ikW1XZRMr8ZDSU74P2P2xIo9woqGSF5anqxB1nxSPobOeXxW8R/UJuifXrhE= X-Gm-Gg: AeBDievc1pddY8waoAVz1ScIOjH2mdW0URXeSeayTUwATY2W8zrrNaFkXlp6/0YEncu VIsYLK11Ymw66sNvex3ySeLjmL6rEVJyfdlxXqaEW+1VW3GYlX0paHZ4AT2x+L2+tAjSXBYteHQ /+jsoQ0WOVj5+6O2t0otqXHogNxIpWKEG7i+Kto1ouiWtQVNJt2nJ3kpA4J2QgHEf4skZ5YzoP+ ySoQH7/iIgbA2OMgNTJP8TRKcnetYnNhyZtDcfUTiX5nMJjHta2v4WxX+nV2/IkJHuL1x6GdRUS 3N/Qfeb2kqSH3KaXbTfKlj7ceDqcHQsrlgfR2BZ1/qapTEMK8SuE9+makSVoIURA85J7Zbp5LkH XrTx8fgdRnS3c2ZpqmwQUgzDmHSLiOWdLAgWew3xaYwkvXji+lBtdsP/ilUsE0Finf67wt0VbMq IrsPQ= X-Received: by 2002:a05:6214:212b:b0:89c:ed34:5653 with SMTP id 6a1803df08f44-8a7048cc933mr194842946d6.7.1775560605844; Tue, 07 Apr 2026 04:16:45 -0700 (PDT) X-Received: by 2002:a05:6214:212b:b0:89c:ed34:5653 with SMTP id 6a1803df08f44-8a7048cc933mr194842466d6.7.1775560605293; Tue, 07 Apr 2026 04:16:45 -0700 (PDT) Received: from [192.168.119.254] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38cd21088b7sm36950111fa.22.2026.04.07.04.16.42 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Apr 2026 04:16:43 -0700 (PDT) Message-ID: <01f9d2d5-5480-4470-b593-eaf2f3908cfa@oss.qualcomm.com> Date: Tue, 7 Apr 2026 13:16:41 +0200 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 3/4] regulator: qcom-rpmh: readback voltage/bypass/mode/status set during bootup To: Kamal Wadhwa , Bjorn Andersson , Konrad Dybcio , Liam Girdwood , Mark Brown , Vinod Koul Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org References: <20260407-read-rpmh-v3-v3-0-34079f92691c@oss.qualcomm.com> <20260407-read-rpmh-v3-v3-3-34079f92691c@oss.qualcomm.com> Content-Language: en-US From: Konrad Dybcio In-Reply-To: <20260407-read-rpmh-v3-v3-3-34079f92691c@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Authority-Analysis: v=2.4 cv=OKEXGyaB c=1 sm=1 tr=0 ts=69d4e79e cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=FpWmc02/iXfjRdCD7H54yg==:17 a=IkcTkHD0fZMA:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=vQJJOj74BLs4DwR8iPoA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: cbiSAH9G_I67y1qP8iwqFIMgK3iFbPBj X-Proofpoint-ORIG-GUID: cbiSAH9G_I67y1qP8iwqFIMgK3iFbPBj X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDA3MDEwNSBTYWx0ZWRfX7zVHLSoY0S6a Q6KBg5hd8tx24priS0/kRnwVWa/MXzctHtmEsCHldF5WPtVWkuheOrdiS8mOBcAU7EkukoSe7MM 6P42RTzfXI9TwOha/4Z4sTOopBFQksqyJRKg6BYEOicpj0TjqPhX++MwLeGFB+YkZLx5QrlnZNA glImYhCe4bDEo7XOYSehaMWPdKQst71l+kwJ4arR0e8zJFJOLMhwfclcNik6umj4SB53So3Lwty If+CGTt3DlSrczlQMLOIFd2jw2A8dQWUpij59u+mTZDMSoQ6XyuaNACtbR8LHVYz+xOUb/GKZCD UL1BZaQvQyaM43tkCWX9ZqhRM3+eScOeGi0SHy4l7zcMn2m8ZKlaScSK+4ToxpNWM0RVWMB1Xqy ou0zcBSqeKS1lh1wuXXcqcYn2CLI6da/Rh15v+0iaOzHWrveFeRMQP2q678qPDCQZa8M3kL8t/g 0t8OBBE5xtFVEBivxHg== 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-07_02,2026-04-07_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 priorityscore=1501 spamscore=0 impostorscore=0 lowpriorityscore=0 clxscore=1015 adultscore=0 malwarescore=0 suspectscore=0 phishscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604010000 definitions=main-2604070105 On 4/7/26 6:43 AM, Kamal Wadhwa wrote: > 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 | 178 ++++++++++++++++++++++++++++++++ > 1 file changed, 178 insertions(+) > > diff --git a/drivers/regulator/qcom-rpmh-regulator.c b/drivers/regulator/qcom-rpmh-regulator.c > index 85fbf10f74bb3393071bc65681356312f27b7527..8e1c576b718b595bbbff7f5fa76de84d4e90f3bb 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 > }; > > #define RPMH_REGULATOR_REG_VRM_VOLTAGE 0x0 > +#define RPMH_REGULATOR_VOLTAGE_MASK 0x1FFF GENMASK(12, 0) > + > #define RPMH_REGULATOR_REG_ENABLE 0x4 > +#define RPMH_REGULATOR_ENABLE_MASK 0x1 BIT(0) > + > #define RPMH_REGULATOR_REG_VRM_MODE 0x8 > +#define RPMH_REGULATOR_MODE_MASK 0x7 GENMASK(2, 0) [...] > static int rpmh_regulator_vrm_get_voltage_sel(struct regulator_dev *rdev) > { > struct rpmh_vreg *vreg = rdev_get_drvdata(rdev); > + int ret, uV = 0; > + > + if (vreg->voltage_selector < 0) { This assumes that the voltage selector can't change due to an intervention from say ADSP - is that true, as far as the _read() lets us know? But I suppose we can't know about __every__ change since they could happen without a notification to HLOS and it's probably much saner to stick to what Linux believes is set on the hw.. [...] > + sts = cmd.data & RPMH_REGULATOR_ENABLE_MASK; > + if (!sts) { > + vreg->status = REGULATOR_STATUS_OFF; > + > + return 0; > + } > + > + if (vreg->hw_data->regulator_type == XOB) { > + vreg->status = sts ? REGULATOR_STATUS_ON : REGULATOR_STATUS_OFF; The 'else' case is unreachable, since you return early if !sts beforehand Otherwise LGTM Konrad