From mboxrd@z Thu Jan 1 00:00:00 1970 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 198183A641C for ; Wed, 18 Mar 2026 09:22:13 +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=1773825735; cv=none; b=Vx63dJwIWt8ziUUguzkqygoSMnrvAOO4bOhrVisTxRoDdGqMEfL1IClGtZr1mRO2Zcmp+slq2p60lUG3LK0p03b76Nhj+f6qbus+kt2bPzQgjxSaAp4yyP3KaawarQKB+je68G+wwW1OcuTbc63odijTvVNIPbJZmofvIRr6OxI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773825735; c=relaxed/simple; bh=VRjHrbIL4vsZdAxlMskUttReSy3mI7GyIubU0jAER/g=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=o3tiRB9Qbv4qgbRyLULhHROEChtN+M3kMGuyGsUOFHw45h7UeKYZFZX2Ly5Aj9JpBDMFR3gHJtUJXcWUfrfR2wgOobMzLH8Fu4wPekdYywOG2iQtaNK8CTWFXehKEKX+tgg9kMIekIHF6TqESXU9a03MPcdLNmqDQ32dfqgn0xc= 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=gl3b/WZr; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Fqg2+7Fl; 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="gl3b/WZr"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Fqg2+7Fl" 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 62I76iTa2613213 for ; Wed, 18 Mar 2026 09:22:13 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= 15hK/7+IQg9d3rM1JPvTgxhytjFXh5CP/ZU9fW/iQ+g=; b=gl3b/WZrIIqNNONS i8sSEFpcBVkDOy6SpPfcvTrdYt+gINMsSAz+05T9sr4ykrE97g7DbiybuZ0n+OVq jQJArG66+IMrokCHORBhHx3adjgHMXVa/HcT1bACgr9KLyfAXOa/p42BZXa+FEtv zIcy9MYF7gZ2nhLkryC3Tc/9PLcZvCSR13X9UpTOemKezVzEfrvOiEs1RV+tLcST mn1OAQaDjTZz4U+KSBOKQNiwPteWCtgcwjt0whU/LFMCFZ4pBOxqrDZkUI61kQRU 08uBskVmhQ2f0deKWXyXeAdacJqVjCH1Vw/eJcxAl+PO+zZUeONOuiEWP9YAeX+y Jj8ZxQ== Received: from mail-qt1-f198.google.com (mail-qt1-f198.google.com [209.85.160.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cyqcdrm1g-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Wed, 18 Mar 2026 09:22:12 +0000 (GMT) Received: by mail-qt1-f198.google.com with SMTP id d75a77b69052e-5090114c791so49361101cf.1 for ; Wed, 18 Mar 2026 02:22:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773825732; x=1774430532; 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=15hK/7+IQg9d3rM1JPvTgxhytjFXh5CP/ZU9fW/iQ+g=; b=Fqg2+7FlY6OhpskGPqgL0lONDlPFHguv0+pYugrjvm3kL7KiFc8bAVFk5BMVWrS+OC nh+dzYDrRKrMXhqZ7L89XCeAM42xsqGi6AqMQQbVN/3uf/pYP57v07IhGwxySelyjsBS /L/csgluMMoAojWEH5eEyIO2gsmQGWzs/A+EiR0oUOCxWo63oltvwN8rYLZlWKXmxFHE DqkMOYqpvcBWq8yfXHvt+xYgptVMu00ni9eTCF7HG7z7kl85nUS0i6YPd6pgzpMTlmR0 uNhQx1JRqxgZJf2S61eUka9UkPOetGEpjWMlw0NcMtl/sXM0gKMJ0N6Bp+KxpVY/xlHI PMdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773825732; x=1774430532; 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=15hK/7+IQg9d3rM1JPvTgxhytjFXh5CP/ZU9fW/iQ+g=; b=cyglw/BzxEfWBFHt+lSl30xDZ9ONiczh9hjerLT9m4IkMoi35Ce6kXYT3wIKm/O+/t lMSunrmk8X7eJkROZzkcoCeoAFx6Z/bKnDXC78gHHD1HzzboKt3Al6jFQAIeqgJqUdUo jdJOEOc5r7T0knWtn+YkewCs3Jcz+7blpbUzeaaVWsCSBvdrSH0NcucYdns0zUE3uMzR AmxL4E54t87xlUvgf2qlbLdL8ee4BzrnQvLFBXIFITaT2qb/bNdb1JmgA1oagcDeQVVA zvZLkwiRhx37VUVLdo0H5QTVOdyDl1yfiVydukS1U3qVecnCbrl+RFHVt6ICn66y91GI Fb9w== X-Gm-Message-State: AOJu0Ywrf0Cie6tCfAnV2sy5cSK7F29DQgfQXRaey8y33h/QpS+xIVko r2CcRpMEe0XI9yMBXp3xYNyvPmH5adsgNQNdGIByJneGlfksAft/6HdYmYXRy1g/c2UHiv3ddVA /o4BTRMR1opBbAegmS0NjevOtq7HQ4hPJQvv/6WJpDcHIWSz/EZXyTXPETb+1fxV3AV8= X-Gm-Gg: ATEYQzyNnY7vn1RUAkyJbjkkFSKn4x7im9VqA5kBgsQ54cX5fjNLVc80lLxJO6AUXT+ bhMZ3kbbquWNlQE2usbI8UXbKtAIG9/9mdpYybxbtqyeblI4z9IFaw0EaFiy80WWuT/Y/Kx0L97 zx0dCq+sMU61VMcBf4Jts8iOG7BoDjPZDyg+ANdlWIV1PFJeQJWe/jNlX0xcv3PpJj9p9a+Dn1s /NhnFQ+zqwliVQjEoYQEGk9H9/6JQ1FtyWHWd4WEmmFu1k39GPE83ucOuuDd1uo3yCax9+Ix7pq OIQ1vy3gQl7CjEyFjgXBmlPcSwex18B6iGBJ1y5GPNCCu7VvG8CudH3JWdy3vVv986bKw/21dGe SXo6jy491KHBVPCio9Gc7AdO3Aj77GNmCLFwxPCwI8JDROnEJJMrrsOJHjTcPB6gQRjgGHAPBy9 +juLQ= X-Received: by 2002:ac8:7d4c:0:b0:509:24e8:ec48 with SMTP id d75a77b69052e-50b148afafcmr21250301cf.6.1773825732297; Wed, 18 Mar 2026 02:22:12 -0700 (PDT) X-Received: by 2002:ac8:7d4c:0:b0:509:24e8:ec48 with SMTP id d75a77b69052e-50b148afafcmr21250121cf.6.1773825731860; Wed, 18 Mar 2026 02:22:11 -0700 (PDT) Received: from [192.168.119.254] (078088045245.garwolin.vectranet.pl. [78.88.45.245]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b97f1689d2dsm161386366b.35.2026.03.18.02.22.09 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 18 Mar 2026 02:22:11 -0700 (PDT) Message-ID: <5a464fca-7be5-44a6-b124-7b80ea859a9e@oss.qualcomm.com> Date: Wed, 18 Mar 2026 10:22:08 +0100 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 v5 4/4] phy: qualcomm: add MSM8974 HDMI PHY support To: Dmitry Baryshkov , Rob Clark , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Sean Paul , Marijn Suijten , David Airlie , Simona Vetter , Vinod Koul , Neil Armstrong Cc: linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-phy@lists.infradead.org, Dmitry Baryshkov References: <20260314-fd-hdmi-phy-v5-0-58122ae96d3b@oss.qualcomm.com> <20260314-fd-hdmi-phy-v5-4-58122ae96d3b@oss.qualcomm.com> Content-Language: en-US From: Konrad Dybcio In-Reply-To: <20260314-fd-hdmi-phy-v5-4-58122ae96d3b@oss.qualcomm.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE4MDA3OSBTYWx0ZWRfX8cZb5awtEd1u +oPV4cW8C/9kzPxMm8pNPZYPIu31ccBEIBNhjBI6acPvK+JfJ4cFweXIMXCcots99Dra+e71KYZ Aoq2Ua9y6ojo0r2mV9JIG8TTxQS2Di6J9FSvcgUECBAGBbhYHbVehCtU08Z3/sMlAQrPfSgCkAv uyNEhXGwjrUHDQWKJev5Aqa23BmM4s2W3MKX+wTufy3oyOE5Ld9DCOxI1YKrZykeveajJ8DeSQJ ttsw4DgdzaEJ2+2iYEdy3xbBXPptXywg7J720EjaHOtaQK5NeKXN14dc7YqhAkmr3l2152P/T/i lBnlPvc61lem7crDFMAiXCyToKHhEhQmTlIWY9c/O40aMNCTDf2kqv6Q4tFI/CN7oU/PxTwVjmh nhai9PSdrx5ImKizAfNDOCKmmHCvIILQVMcGDAPs7GHf5sWHnoWEC7IhKIYZqvseTLQFe3sVfZX Ta4bhURZPyFV7QuteoA== X-Proofpoint-ORIG-GUID: DBHilelyWrwoxIvqib-F6xAniTgV1efE X-Authority-Analysis: v=2.4 cv=H87WAuYi c=1 sm=1 tr=0 ts=69ba6ec4 cx=c_pps a=mPf7EqFMSY9/WdsSgAYMbA==:117 a=FpWmc02/iXfjRdCD7H54yg==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=rJkE3RaqiGZ5pbrm-msn:22 a=KKAkSRfTAAAA:8 a=EUspDBNiAAAA:8 a=Z2itlUKkCiT7gnwI7HQA:9 a=QEXdDO2ut3YA:10 a=dawVfQjAaf238kedN5IG:22 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: DBHilelyWrwoxIvqib-F6xAniTgV1efE 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-03-17_05,2026-03-17_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 spamscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 suspectscore=0 bulkscore=0 priorityscore=1501 phishscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603180079 On 3/14/26 6:06 AM, Dmitry Baryshkov wrote: > From: Dmitry Baryshkov > > Add support for HDMI PHY on Qualcomm MSM8974 / APQ8074 platforms. > > Signed-off-by: Dmitry Baryshkov > Signed-off-by: Dmitry Baryshkov > --- [...] > + sdm_freq_seed = mult_frac(remain, 0x10000, int_ref_freq); > + > + val = (ref_freq_mult_2 ? BIT(0) : 0) | > + ((refclk_div - 1) << 2); > + writel(val, base + UNIPHY_PLL_REFCLK_CFG); > + > + writel(sdm_mode ? 0 : 0x40 + dc_offset, base + UNIPHY_PLL_SDM_CFG0); > + > + writel(dither ? 0x40 + dc_offset : 0, base + UNIPHY_PLL_SDM_CFG1); > + > + writel(sdm_freq_seed & 0xff, base + UNIPHY_PLL_SDM_CFG2); Some beautification (BIT(), FIELD_..(), defined magic values) would be really nice to see.. although I'm not sure how much you can do with the PLL registers.. [...] > + ref_freq = ref_freq * 5 / 1000; mult_frac() [...] > + rate = (dc_offset + 1) * parent_rate; > + rate += mult_frac(fraq_n, parent_rate, 0x10000); > + > + rate *= (refclk_cfg >> 2) * 0x3 + 1; Really strange calculation, but in the end this is (n * 0.75)+1 - mult_frac()? > + > + return rate; > +} > + > +static const unsigned int qcom_hdmi_8974_divs[] = {1, 2, 4, 6}; > + > +static unsigned long qcom_hdmi_8974_pll_recalc_rate(struct clk_hw *hw, > + unsigned long parent_rate) > +{ > + struct qcom_hdmi_preqmp_phy *hdmi_phy = hw_clk_to_phy(hw); > + u32 div_idx = hdmi_pll_read(hdmi_phy, UNIPHY_PLL_POSTDIV1_CFG); > + unsigned long rate = qcom_uniphy_recalc(hdmi_phy->pll_reg, parent_rate); > + > + return rate / HDMI_8974_COMMON_DIV / qcom_hdmi_8974_divs[div_idx & 0x3]; nit: double space > +} > + > +static int qcom_hdmi_8974_pll_determine_rate(struct clk_hw *hw, > + struct clk_rate_request *req) > +{ > + req->rate = clamp(req->rate, > + HDMI_8974_VCO_MIN_FREQ / HDMI_8974_COMMON_DIV / 6, > + HDMI_8974_VCO_MAX_FREQ / HDMI_8974_COMMON_DIV / 1); I don't know if it's a good direction, but maybe: const unsigned long max_rate = HDMI_8974_VCO_MAX_FREQ / HDMI_8974_COMMON_DIV; clamp(req->rate, max_rate / 6, max_rate) ? [...] > +static int qcom_hdmi_msm8974_phy_find_div(unsigned long long pixclk) > +{ > + int i; > + unsigned long long min_freq = HDMI_8974_VCO_MIN_FREQ / HDMI_8974_COMMON_DIV; reverse-Christmas-tree? > + > + if (pixclk > HDMI_8974_VCO_MAX_FREQ / HDMI_8974_COMMON_DIV) > + return -E2BIG; include/uapi/asm-generic/errno-base.h 11:#define E2BIG 7 /* Argument list too long */ -EINVAL? Konrad