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 A0EAA40B395 for ; Tue, 9 Jun 2026 12:57:58 +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=1781009880; cv=none; b=bvEFflBrAJpqhsMPbYRBkmVKcMZSrP2rSHcVtzoJrOnnbAiJq+Pnu9SudPR5V4TITKsXTy7Qujpr7IaNfqo5MrTW1YwKHf3pnnl+9zDuTij/15xDK2W+CO8sgp1Ems5kWHpJR6N2J9aQPzAOvg39Zx/ukDcyeo7Z2cCuNrpKJkk= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781009880; c=relaxed/simple; bh=VeKcdjbjG9neMz/DzvyzOu0eKpXEomcIjl9R1GRbPbE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=lGnbbO9/tXfqxSl5WgLtlklthqFli94QiIKk65bInJ/1oJ2T8QB/RQE1kEuq1/ZPBwmfJCxHD/TmwOO72CW1Sq1oMK9aze/Vkm0T7ahtMAXwEYgsnOlQ6pVGy2512iOQvQM8Qy9jwEWdEg6y+4IPBaZ9S3hJ/cHO9R57BbIn5kc= 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=Zim+083o; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Ygl5G+6i; 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="Zim+083o"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Ygl5G+6i" Received: from pps.filterd (m0279863.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 659ClLZo2249450 for ; Tue, 9 Jun 2026 12:57:58 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= jGOsl3o1y58ZtNWsmGTcSIVSD26o9VXU5DHOJ3gam3A=; b=Zim+083orGh6vg/E dJbkU/d7rmClKcr8pxP2VksKpwGbPXv32HFrfdW3FOwNSGwMx2zV5sb8dmc8pX1D JBX2fcv3vSO9MdLGkjlFtOAfMKj6hbDS7RpOhyQAYJbq9Gt6PN9NMfOwOuCjtmQQ P0UbGWKbpAzvcK3gW8ipBJPp2+1bToDIJbJow64tJv5AUhgBultRxqg/x2NRDBXQ qKPeoqyjhC2s6aovT3oplxe7RpXnvxJR8Zl903egBlaaEH+lFfs+ChDaGhytZEmc x5pdWZneAUHpIgYMgg0I8Z7jDoO30ove3G1du3Bl565URYL9WGvvysiQv7cgTVvs 7Cr8zA== Received: from mail-vs1-f72.google.com (mail-vs1-f72.google.com [209.85.217.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4epg3wguq8-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 09 Jun 2026 12:57:57 +0000 (GMT) Received: by mail-vs1-f72.google.com with SMTP id ada2fe7eead31-6c5a5133221so196603137.0 for ; Tue, 09 Jun 2026 05:57:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1781009877; x=1781614677; 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=jGOsl3o1y58ZtNWsmGTcSIVSD26o9VXU5DHOJ3gam3A=; b=Ygl5G+6iTfUw8BLZzlIwXNOK/Fah9iHbPXplHYkfYxPG/AJDqib3TymO5L3mYqylcE lbawX4E9F9OqiyJUx1Ol/Q9PDLzRgJNIe4ZpMAO6vLEhnZUWDOf+EA4JtGQ7BuS/KKpo IS31avH/eHrlEV82hUE/Sw/VtS93xhiLAeUXCjzqgWzFV06u3v76kmX1m2oMH9bkv5ZO ZsO7TIOgZk0iSjgODWXEHMplv4G67tljyvUs+nHxczfKZrWfL02LLW4D/CHLl+Mz/cQ3 nzk4ZzojkINt+ZcinsZR3U1BxBZVbY6ArBy/GQ3wm+H2Bq+CUOIHIYDJHCfYpjNuUiQc EvaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781009877; x=1781614677; 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=jGOsl3o1y58ZtNWsmGTcSIVSD26o9VXU5DHOJ3gam3A=; b=cENY4AKhrbbRycl9H+7UesmmfWe1YIU6zHptSoh6T2YblbKxyoqqwqivO505+UfLxE L0PLjXDpKoZyfOpltN3UC77BfnMpwOhdvuI+pTxMH2gYEib6BAxatwfj1Svio++giru4 HCVlWDcu/9WGhniZonggcx/MvGqwDqBkPZsllMpxZVvpRiic4wMXamoX9a0WeuORLVj2 itUG0NCJn3IHDAmcoRRzsKOeOe72eJOCVS/D4J5JUy4rZ3xZk12OjPbhb0nsLxqUB/JW f3I7lyg8wH3DHlkc56ioYeeoWUNaF/vzpW7cE1bmo3CqT+VGhbOoF6SlDhKYFoJWJI2S MvPQ== X-Forwarded-Encrypted: i=1; AFNElJ/1HIcmWQUn8/6neyri724faFmDTgg7NJ9jiVfaH5g87nG2gk0wS+bbDwH425CqoerKnQ0GjklsnejBZmo=@vger.kernel.org X-Gm-Message-State: AOJu0Yx9z9q/jlZiL4Dk+RKQLcusCZgPFwldVLWoOXUa3HSXgzThkwUu b5HbN3vDAcPrPbTNTcku7BIH0pU/h0ORJh22kQRHGxl6+Z63GvqwHjh30cSKX5KUoOTwZ9JErrJ 1WmxLzNksh8gZliAPZwfdSPHpHARMP6Z49tnySxjdrpFvrepDQTzdaYr1E2jts3OQS2A= X-Gm-Gg: Acq92OHx/QIEM+Fc2+jQ0XYYOhC5M05+UFXzWdW+5/nUWkoTu6/A8wsHM5MhFdjqdJe op4pJfhb99br7vgNUhTCriwrLkPzk3NWGT/XwjG/9xMcvzpKNFHoxXDG8VPEBuQ/Ignjf2Qs12m Ndvxsd+8ub+XiTZKp5Ds5UP3bBACTpWRHdXhyQ+5AM55CTveOn+BY2N4zAYV7aOOCUQ7ucEeyDz Nj886WxscMKeP0pKnyfAshq6S1DnSVKmykPWWkQ+GA486HRnTohOKdm1+2+MWvoeZCzEweAz+GI bVYRFzK/wRQ0+OSCgT2ynFHLhxoi6o90LBA2djVC12+Tkr2jCr3tYjHf4CJ53DtV7YP7Wfi6auX csLKaCiEZRQ4wmwM0KtqxCAoWPvKo7inMaVPBfpvVgJjiLIyv7zUTzUla X-Received: by 2002:a05:6102:4494:b0:65a:fe89:c8e7 with SMTP id ada2fe7eead31-719254ae70fmr316662137.4.1781009876849; Tue, 09 Jun 2026 05:57:56 -0700 (PDT) X-Received: by 2002:a05:6102:4494:b0:65a:fe89:c8e7 with SMTP id ada2fe7eead31-719254ae70fmr316651137.4.1781009876459; Tue, 09 Jun 2026 05:57:56 -0700 (PDT) Received: from [192.168.120.170] ([178.235.128.140]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5aa7b99ca90sm4648052e87.84.2026.06.09.05.57.53 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 09 Jun 2026 05:57:55 -0700 (PDT) Message-ID: Date: Tue, 9 Jun 2026 14:57:52 +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 v4 2/7] clk: qcom: Add generic clkref_en support To: Qiang Yu , Bjorn Andersson , Michael Turquette , Stephen Boyd , Brian Masney , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Taniya Das , Konrad Dybcio Cc: linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, krishna.chundru@oss.qualcomm.com References: <20260527-tcsr_qref_0527-v4-0-ded83866c9d9@oss.qualcomm.com> <20260527-tcsr_qref_0527-v4-2-ded83866c9d9@oss.qualcomm.com> Content-Language: en-US From: Konrad Dybcio In-Reply-To: <20260527-tcsr_qref_0527-v4-2-ded83866c9d9@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjA5MDEyMSBTYWx0ZWRfX7gAB4JPPr5Iv lr3hfCuWIXMWN7GwIrJv7hN7g2UYkwO3YRJKT7vIVTt4rPewyVSLr7gL6lGmez6R14JwnekKWxh z/OwQDAdCCIxGLkBiCuVQ3Gdyz6D3gcybEnfGUD7/zyElQtal3SXzOo7UAW4N5LvdqL0Q5cKSdh 4CFQSfGOPVhUZfzTSRX/j7WOo7RwQV6P8ZJLJ8UhY8q3L4v6mkTnDzZEajop01EG9nUxSSijmSo EwdeQOaE5hk5cRMhSBRAY0Pmu3E8F2NqNxxY9CMkHJ9lFOQDkY4zagk1XTRTul9UvSb1qMxLlfm SZjAhE027AfoTsHVw6VgyE8aO3EgFQI8PLp2cHDES5V/lcZHut5jxGaeD/P4z3otn4evZ0EpUuV PRDG+M/ZS/nQcJ6szUjBdHSlsLLNgb05pCU1WMmbBpkM9DHjazpRZQRj8/WY9PGBemR2kqbriN4 WmWUX9mqKpWiRvRxiyA== X-Authority-Analysis: v=2.4 cv=csWrVV4i c=1 sm=1 tr=0 ts=6a280dd5 cx=c_pps a=DUEm7b3gzWu7BqY5nP7+9g==:117 a=PRfkaYvzSr8QmIIGAkY2Sg==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=yOCtJkima9RkubShWh1s:22 a=EUspDBNiAAAA:8 a=ZOZ9JJu0O6LkbGEWVdAA:9 a=QEXdDO2ut3YA:10 a=-aSRE8QhW-JAV6biHavz:22 X-Proofpoint-GUID: DxsGvL8hyKbgIMK3Wd3rPs0eL8ExBQ-H X-Proofpoint-ORIG-GUID: DxsGvL8hyKbgIMK3Wd3rPs0eL8ExBQ-H 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-09_03,2026-06-09_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 impostorscore=0 phishscore=0 suspectscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605210000 definitions=main-2606090121 On 5/28/26 4:29 AM, Qiang Yu wrote: > Before XO refclk is distributed to PCIe/USB/eDP PHYs, it passes through > a QREF block. QREF is powered by dedicated LDO rails, and the clkref_en > register controls whether refclk is gated through to the PHY side. > > These clkref controls are different from typical GCC branch clocks: > - only a single enable bit is present, without branch-style config bits > - regulators must be voted before enable and unvoted after disable > > Model this as a dedicated clk_ref clock type with custom clk_ops instead > of reusing struct clk_branch semantics. > > Also provide a common registration/probe API so the same clkref model > can be reused regardless of where clkref_en registers are placed, e.g. > TCSR on glymur and TLMM on SM8750. > > Signed-off-by: Qiang Yu > --- [...] > +static int qcom_clk_ref_enable(struct clk_hw *hw) > +{ > + struct qcom_clk_ref *rclk = to_qcom_clk_ref(hw); > + int ret; > + > + ret = regmap_update_bits(rclk->regmap, rclk->desc.offset, QCOM_CLK_REF_EN_MASK, > + QCOM_CLK_REF_EN_MASK); regmap_set_bits() > + if (ret) > + return ret; > + > + udelay(10); > + > + return 0; > +} > + > +static void qcom_clk_ref_disable(struct clk_hw *hw) > +{ > + struct qcom_clk_ref *rclk = to_qcom_clk_ref(hw); > + > + regmap_update_bits(rclk->regmap, rclk->desc.offset, QCOM_CLK_REF_EN_MASK, 0); regmap_clear_bits() [...] > +static int qcom_clk_ref_register(struct device *dev, struct regmap *regmap, > + struct qcom_clk_ref *clk_refs, > + const struct qcom_clk_ref_desc *descs, > + size_t num_clk_refs) > +{ > + const struct qcom_clk_ref_desc *desc; > + struct qcom_clk_ref *clk_ref; > + size_t clk_idx; > + unsigned int i; > + int ret; > + > + for (clk_idx = 0; clk_idx < num_clk_refs; clk_idx++) { > + clk_ref = &clk_refs[clk_idx]; > + desc = &descs[clk_idx]; > + > + if (!desc->name) > + continue; // this allows "holes" in dt-bindings for $reasons if (!desc) continue; // this makes sure the programmer did not omit something important // while not taking the entire system down if (WARN_ON(!desc->name) continue; Konrad