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 8A6D8413D96 for ; Thu, 4 Jun 2026 11:37:43 +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=1780573064; cv=none; b=MG6RugukhdpE4l+YbSyvd9gMVwPX8N94UASh+1Ym9GQJhy2LjMqQwdnbGUdYSUgIPcWBptfrdl7sm7RYRtBJoeX949cMYX37zW+n3nyVTvr4CpUWKjaqsngeBGNEz6aoTzKXxX/pB8s9KJxfSSEyr43KYgY/8k5UA+OySTFRQWI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780573064; c=relaxed/simple; bh=MUst1MLkAAjlIqGj9NF3PoqmV8scdkQpsGC/RSxlZ2M=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=fu0FsCnh6yP/PQmHY1doh4+omckOrQKBPaEjWroKbd7P6Rp21R3PnJlheuS4ko0i6Gcr3xrVtC4+En1yyBiRKo4qcHRl/WpgXQUZKEGwe/FyxvZA5jgdaxbBmL0xYMm7aE95SjKTnq5a7lESko8/pqGccdqCfcGzCU86GKONKNU= 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=D9LAZM0S; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Zsccr6XQ; 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="D9LAZM0S"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Zsccr6XQ" 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 6548DluU599320 for ; Thu, 4 Jun 2026 11:37:43 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= qXvacYyh5VG4TTgXv/NQTXRitLcLUy9KAEIH2z6Aw2w=; b=D9LAZM0SJTt2XlQK TspSgUHHWk9nVfgJh1TpQBS1kaxTXgfju1FHxsxRAeNVw2GeHcAOnvlrlC0r9Mts R3tldW5f3RAPfat5KZPDkxVuDTrgfpk0sK0wiQdUEc2ar0rXtn5KHYsne67OT23P LhZrfTLFnpyHUT4KKWSs2AWT13vkcqqa7Rfj+L1f2ucYyGYtR6+aiwunx0XaNrY7 8VP9FsEIWJ7GMMLSeeOuaj4ArOvW+tLHzvThhcjsRN4QjYYQK+VJ+FZwN3LXfA9Q DnnePqqsgLoovCYjetu5599sEKH8A8quZTQ2tsitQsUVgK9CTNsPeCdhQc6RqCK0 gY3PpA== Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4ejy8m2465-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 04 Jun 2026 11:37:42 +0000 (GMT) Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2c0c32f4b1bso6882725ad.2 for ; Thu, 04 Jun 2026 04:37:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1780573062; x=1781177862; 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=qXvacYyh5VG4TTgXv/NQTXRitLcLUy9KAEIH2z6Aw2w=; b=Zsccr6XQsYwC2hm/HGPh2/RaPgjWYIeo74T9PS2r8NeDB69gafLRV8jaS+F7byh55w sLvn6UVEXA2ldYEEl1w5xczlm+OCjWJBD1IRO6G0nA6OawJwA0LszQ3UTqdrsMPHt+5P 7KiG/vN9AwWuguxLI+QErVZP92HTkNnq1t+u+0D8iZyA/8vlw9oPUMAqiuidYR4pzIYv 8d1NDmm5ExBCC0T/nZ892qHM4ySkWWwRN6wdiycggfBLv0Dn5h/b5G4jGzae1zCZN8pb oElORp0bh2tPXynWZiYpf+SSdXr36qnk1mPp5MvMt81h1G00AGJW0+FyEclVRPfcij8U cefQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780573062; x=1781177862; 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=qXvacYyh5VG4TTgXv/NQTXRitLcLUy9KAEIH2z6Aw2w=; b=DDNazr+MFJVljrdIYCiuEzmrKJhFzO/ans5hH8JpUnXpIz/mr0/QBTvnB214/cEc3e AC/tYYMBtBcIMJF3AeY7JwLGRgn5bo18SUm8o7cllpMR3oChbwG3keiPzBlCj/6oRnex FqO3Pds0GC6eP6kBqKh2lumsqnzng6Jn0tbE9qb38WXLAMGprDJse9KX/4fO/31MXjc0 HvhY/YGpGOQaHf0akxHhAW6FOFn6lAnCqflGXWdy65C2z0HJJV+PmU5ZFrJL4KC7/204 FyhzB1jO8bjVXMffq3kmrcdr7y5K/aUcNKAtEpZ6430Ys1B5cqYxziYkEY9jrq9CIjD4 i+hQ== X-Forwarded-Encrypted: i=1; AFNElJ9VVGBV8tcZYYkrbel45Qei7gKoU4bb+t03PfslREZZBBe5jwMlrgZ/n6nrxQojckuWt7R1UshAjaL80uQ=@vger.kernel.org X-Gm-Message-State: AOJu0YxYFCwOKxJPz6MDB3wXqJd7pzwbsJ8pkvdo5IP62aVzUuMK6AIl c3W0+Xk5PHbCA6OVhU1FwbISHTRJ6435H6KXgoX0FdevXhXBlbdOAqpOsHCanpo/6BOEZyRt+Ko iOjPibha+nKl5fZQFkP1AgZFsP1h9C1LZuvlf3JMVydnR9K065NpGPAeO4Kh4CfKcwEo= X-Gm-Gg: Acq92OHIbR5En7XNYuaYwge8pEaYi5dJWASRp9catWzF0+ju6CwdlJ2FmpnkqZ+4JoG qPMtREujX1A71HgrTclYW5xPgj1kgS+eD8VBt2mnWa2RIK8eteald+eZAIE2hc9QQrSmnMzFvG4 iGKCuUY11JHDhWfAoXhph6FmYSGm4t6uT2F0uumwr2h21hlEe7tD5ahSCxFsoEVoJnFwvxaZ2sW p6FtAZCvCZUJVr/OCacARa+lcmXFe54o4BetkU90DCvbFXDgRcSLrGBsINw/pJthwwUd/SZVeal dgcyRJR85cvFhtJbnhH0r/qyhi4JBNeugRQh1KpFA/KXE5qGaKZVBVNMUzZO2OlYStiB1Coq6nU P3z4KMc8SoQRHO4KCQSQf8Z6NWKnO5YXhzTE1XmnukfOW8qB4yxKzHKF23hzRF0ZAyb7tB7bpNd wi X-Received: by 2002:a17:902:e88e:b0:2b2:4260:109 with SMTP id d9443c01a7336-2c163d8ca4emr87064545ad.23.1780573062029; Thu, 04 Jun 2026 04:37:42 -0700 (PDT) X-Received: by 2002:a17:902:e88e:b0:2b2:4260:109 with SMTP id d9443c01a7336-2c163d8ca4emr87064185ad.23.1780573061578; Thu, 04 Jun 2026 04:37:41 -0700 (PDT) Received: from [192.168.1.9] ([122.164.81.128]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649fab9sm56977595ad.79.2026.06.04.04.37.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Jun 2026 04:37:41 -0700 (PDT) Message-ID: <6d2f2756-0d83-4a84-a39e-d830bd0d9164@oss.qualcomm.com> Date: Thu, 4 Jun 2026 17:07:35 +0530 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 2/2] regulator: qcom-refgen: add support for the IPQ9650 SoC To: Dmitry Baryshkov Cc: Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Konrad Dybcio , linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org References: <20260602-ipq9650_refgen-v1-0-55e2afa5ff64@oss.qualcomm.com> <20260602-ipq9650_refgen-v1-2-55e2afa5ff64@oss.qualcomm.com> Content-Language: en-US From: Kathiravan Thirumoorthy In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Authority-Analysis: v=2.4 cv=KfDidwYD c=1 sm=1 tr=0 ts=6a216386 cx=c_pps a=IZJwPbhc+fLeJZngyXXI0A==:117 a=CuxhqhSUAd4m3DS74PnwmQ==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=I8ymiPN3apOPhcWNF14A:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=uG9DUKGECoFWVXl0Dc02:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA0MDExMiBTYWx0ZWRfX6/Eejejnu68F 9i44gt5E3oH7Z/fwL2c+yBd6x3cNxbodMj0N2byDMGXfr+br8M6MKXyjYXnWrUITKqh+P7hPZbv cPAPN9ifh9IEj/8owDwckUOVN/z0yHWfISaOcFlfQt6kcuXo/ZZP66X3O2Ka1yZe8LM4shW/0BA HN/uI36xSOa9U9BPaJQM0A4XUme171EsXLl77bFx0wcTc3tgD6rFx1cLnKmlG/esaNcd4ZAgzo/ sGZzCwBFDz4IuGQa/lENOkvqYqgkHf9Wb8D1p6dW+zgvFGw5YvaNrfgMIf6BSrRpDbaOz2MGqEr W3gVR7BNs91gtVJmadSfUz61aXxRLfVgO+7PMVk0ZXitkmZXOJyQSQKF5EuELaSObyfCAC4cGAP wjgkoaSJJ9D6hkR/2G8vY7UhJ0UEweS6luCFOuvAWUSdsC1GwRQ2nbRRpeJ2UTMhMNjNgVcZnxD YE3OVvB/WFPOKihDVeg== X-Proofpoint-GUID: UTb8JXSjTKmZRp9d-s9aSpc0eeybHMkm X-Proofpoint-ORIG-GUID: UTb8JXSjTKmZRp9d-s9aSpc0eeybHMkm X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-04_03,2026-05-28_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 bulkscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 priorityscore=1501 suspectscore=0 spamscore=0 phishscore=0 clxscore=1015 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606040112 On 6/3/2026 6:47 PM, Dmitry Baryshkov wrote: > On Tue, Jun 02, 2026 at 02:52:00PM +0530, Kathiravan Thirumoorthy wrote: >> IPQ9650 SoC has 2 REFGEN blocks providing the reference current to the >> PCIe and USB, UNIPHY PHYs. For the other SoCs, clocks for this block is >> enabled on power up but that's not the case for IPQ9650 and we have to >> enable those clocks explicitly to bring up the PHYs properly. >> >> As per the design team, REFGEN block provides the reference current. >> Hence marked the regulator type as REGULATOR_CURRENT. >> >> Signed-off-by: Kathiravan Thirumoorthy >> --- >> drivers/regulator/qcom-refgen-regulator.c | 94 +++++++++++++++++++++++++++++-- >> 1 file changed, 90 insertions(+), 4 deletions(-) >> >> @@ -62,6 +75,49 @@ static int qcom_sdm845_refgen_is_enabled(struct regulator_dev *rdev) >> return 1; >> } >> >> +static int qcom_ipq9650_refgen_enable(struct regulator_dev *rdev) >> +{ >> + struct qcom_refgen_drvdata *drvdata = rdev_get_drvdata(rdev); >> + int ret; >> + >> + ret = clk_bulk_prepare_enable(drvdata->num_clks, drvdata->clks); >> + if (ret) >> + return ret; >> + >> + drvdata->enable_count++; > I think, a regulator enable() is called only once. Is there a point in > having enable_count as int? Ack. Let me change it to boolean type. > >> + >> + return 0; >> +} >> + >> +static int qcom_ipq9650_refgen_disable(struct regulator_dev *rdev) >> +{ >> + struct qcom_refgen_drvdata *drvdata = rdev_get_drvdata(rdev); >> + >> + clk_bulk_disable_unprepare(drvdata->num_clks, drvdata->clks); >> + drvdata->enable_count--; >> + >> + return 0; >> +} >> + >> +static int qcom_ipq9650_refgen_is_enabled(struct regulator_dev *rdev) >> +{ >> + struct qcom_refgen_drvdata *drvdata = rdev_get_drvdata(rdev); >> + >> + return drvdata->enable_count > 0; >> +} > Linux knows if it had enabled the regulator. I think the usual case for > the is_enabled is to be able to read the hardware state. What is the > point of having this callback? Without the is_enabled(), regulator core assumes that regulator is enabled and always-on and is_enabled() is not called. Hence, it is needed in this case. 3458 static int _regulator_is_enabled(struct regulator_dev *rdev) 3459 { 3460         /* A GPIO control always takes precedence */ 3461         if (rdev->ena_pin) 3462                 return rdev->ena_gpio_state; 3463 3464         /* If we don't know then assume that the regulator is always on */ 3465         if (!rdev->desc->ops->is_enabled) 3466                 return 1; 3467 3468         return rdev->desc->ops->is_enabled(rdev); 3469 } > >> + >> +static const struct regulator_desc ipq9650_refgen_desc = { >> + .enable_time = 5, >> + .name = "refgen", >> + .owner = THIS_MODULE, >> + .type = REGULATOR_CURRENT, >> + .ops = &(const struct regulator_ops) { >> + .enable = qcom_ipq9650_refgen_enable, >> + .disable = qcom_ipq9650_refgen_disable, >> + .is_enabled = qcom_ipq9650_refgen_is_enabled, >> + }, >> +}; >> + >> static const struct regulator_desc sdm845_refgen_desc = { >> .enable_time = 5, >> .name = "refgen",