Received: by 2002:ab2:7a55:0:b0:1f4:4a7d:290d with SMTP id u21csp377423lqp; Thu, 4 Apr 2024 16:44:12 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCXvSp54r+87iw4XlD73EUffMrOl1hyKbfQlDvbS1Otq2jYPhi4nUlzSIjHKAMlIIdZmOVTeB/WbMQ6dNgvcJSQ/8um3OmwTHYioYPO8PA== X-Google-Smtp-Source: AGHT+IEqE9CEMKs4Cl1QadJGn3QU5H91m6EeHDZkiK7uiPGD0dgnmvGoh47ZcKiFXJEEmYDzHBOz X-Received: by 2002:a17:903:d1:b0:1dd:7da:e0a9 with SMTP id x17-20020a17090300d100b001dd07dae0a9mr3169211plc.69.1712274251972; Thu, 04 Apr 2024 16:44:11 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1712274251; cv=pass; d=google.com; s=arc-20160816; b=APcW9SR7y+R4Q89wjDu6OTWxZchG1ho66MXcDXrNGNJAsCBVWLh0vyxKWhznO2FIcu qqv00qltPERKdykWZx2X+MwBmod58Embzg0q9C9hrb0G83D6Jhi4vxrFWCG57EGeRylp Xc4NmP2ynYAxzhOGK4TB5Pmr+MHOl0N3HJGmtuz3Kyr8+NR8VPEjxgHaodC7RBeK/EtH Cgq9kYjIwvUSsMyzQ556aOirbMGmPqeEuirgjyy2RZtLov06b48IEJv5eye7cldVxEeY OM7l7DrPqCDQf4JUB++4vzaNbYFdT5c3Xy2j6J1/ENKerFOQHNuO3tyKWaTdzwg50Y4P +6vQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=RMI5yWOLAVIgIkbCc96VWxktkn/9P3095VY77NHNd1o=; fh=tONEMg/bP4QbvxJjE8Ny4mY1kzjotwIM+EwNxNXrrqk=; b=dG1VXXXw/tbfIgMSKujpxCkrLFcfOfj1DvWcM/4ybWD8G1aUN1fBpcrSzhh1wlp2Md pwaUIwspTm2vbryZe3fHbeZVx6XWj3rnLg0PQu7JLzbdhyfso/d4UBICpMK9AK/TmbBW 7zjB4fn+YG8odzRYWl1eQzC+RNEX6bV1EONx/AaFjnBNF46up9r2+Qfi/eoDhHUw33HB Os647+BBowrgHUfpRWtoog71I5lFqdWW8DHYkWIoyssvwk9qNpw3XTuHAoPXb7HOY9Ev G+osCJoOW1f6znv1AGqitfkBrJOM+OeXqKiaSGbAhh5PKw3W+meMTugLKp3Xfc85tf3n dlig==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=YDCPsRK8; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-132271-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-132271-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [139.178.88.99]) by mx.google.com with ESMTPS id o4-20020a170902d4c400b001e2b01d4c15si299767plg.101.2024.04.04.16.44.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Apr 2024 16:44:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-132271-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) client-ip=139.178.88.99; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=YDCPsRK8; arc=pass (i=1 spf=pass spfdomain=chromium.org dkim=pass dkdomain=chromium.org dmarc=pass fromdomain=chromium.org); spf=pass (google.com: domain of linux-kernel+bounces-132271-linux.lists.archive=gmail.com@vger.kernel.org designates 139.178.88.99 as permitted sender) smtp.mailfrom="linux-kernel+bounces-132271-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 70502289408 for ; Thu, 4 Apr 2024 23:43:58 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E8D0713C697; Thu, 4 Apr 2024 23:43:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="YDCPsRK8" Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 83FF913C3DE for ; Thu, 4 Apr 2024 23:43:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712274232; cv=none; b=scoHDt2yc+/7Bn32OEE1GJQj0c9MtBx+iCtX7DMS6Vc6DB0MErZRTiHvvW2ob1woaIS74r0XPJNEz524N11Dk10W7re3bo3Efk39TjR4ay4QkCO41eLxqKmjAtomryvwjVE8E7+pz5gh/d5B/z5vpNlCV7w3lxI6tX2U1AG/e8k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712274232; c=relaxed/simple; bh=JJPz/P2CcR2ZufWiDJCZzZH/1OFiSj5m3Mdo8cC++Zw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=okclUya1HwfCSf+qoC9Zc7aIF65DyzSbqG2YEr0vGo8+P4bH9zhKZGft1FIZyxlnYfRbMnWmMVykUiST6OiQi318LhZ/DYhCEe4obDMYFl0ClVeVfMWDE/baG60WgFG9zFlYF1YxTXD0kDUqfTFLOdfVJZjKZF06gOUwr4/8NQo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org; spf=pass smtp.mailfrom=chromium.org; dkim=pass (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b=YDCPsRK8; arc=none smtp.client-ip=209.85.215.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=chromium.org Received: by mail-pg1-f180.google.com with SMTP id 41be03b00d2f7-5e4613f2b56so1451211a12.1 for ; Thu, 04 Apr 2024 16:43:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1712274229; x=1712879029; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=RMI5yWOLAVIgIkbCc96VWxktkn/9P3095VY77NHNd1o=; b=YDCPsRK8OhajbKvIhfTJub2L64/s9EM6WJdQPsXmJ7Sc/0oPsmAJrtX5Z1dTLr1yva sKQIJy8w9rdGGLt9mVG9XiYKzf44O6N6O6gE/qZOJK7u/cjX/zFkZZ01dfxSBWWsTlp1 nym5Ay1AzbiYtrpInNNcN7GX/KeStG3Hs9TM0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712274229; x=1712879029; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=RMI5yWOLAVIgIkbCc96VWxktkn/9P3095VY77NHNd1o=; b=XElWHY2nXpEcKMbpd2Monu2SlU13cWvqqkk/ev+zBAHPx79kitMsdiiNdeX1JPikhY vilzqWPaDXJNUbwVlxgUb2Jhq7lizsbgtyGRc4PvyG9Z0qKyVfehnesv7gj3gNcJR9SU bLAlgHPP2nloAICpFLouhOqpE3PAd55iq2OxUfEYk3taXZhp6V4F4olNAolksOUSohOE nV+PIG7ukANUyj9mqyJhZ+JV635yLGP8gKlhlEcjstwgNB0TmAK0pcEvPp9elRwyij9s lTn6WXYC+/ZuqHJuItSRw+Jq6LOa5nBZZx6IanAy7cjK9mPJRDHirwSfx0VRonzZh6V1 +xnQ== X-Gm-Message-State: AOJu0YyKeHl83WxwJdBWQEEYIS366rFGapf3LuCnwGpe8pfO74clLcTn Z3pj5fLt+R+4tWQPcyK3tiz7wubI4/Z2YTsZAVLceGVWUqA7ywAGMeMncwJTbp2bzilPIWH4dtw = X-Received: by 2002:a05:6a20:1057:b0:1a3:6bb1:92fb with SMTP id gt23-20020a056a20105700b001a36bb192fbmr45166pzc.19.1712274228928; Thu, 04 Apr 2024 16:43:48 -0700 (PDT) Received: from localhost (4.198.125.34.bc.googleusercontent.com. [34.125.198.4]) by smtp.gmail.com with UTF8SMTPSA id ga16-20020a17090b039000b002a2b06cbe46sm269450pjb.22.2024.04.04.16.43.46 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 04 Apr 2024 16:43:47 -0700 (PDT) From: Stephen Boyd To: Vinod Koul , Kishon Vijay Abraham I Cc: linux-kernel@vger.kernel.org, patches@lists.linux.dev, linux-arm-msm@vger.kernel.org, Konrad Dybcio , Bjorn Andersson , linux-phy@lists.infradead.org, Neil Armstrong , freedreno@lists.freedesktop.org, Douglas Anderson , Abhinav Kumar , Dmitry Baryshkov Subject: [PATCH] phy: qcom: qmp-combo: Fix VCO div offset on v3 Date: Thu, 4 Apr 2024 16:43:44 -0700 Message-ID: <20240404234345.1446300-1-swboyd@chromium.org> X-Mailer: git-send-email 2.44.0.478.gd926399ef9-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Commit ec17373aebd0 ("phy: qcom: qmp-combo: extract common function to setup clocks") changed the offset that is used to write to DP_PHY_VCO_DIV from QSERDES_V3_DP_PHY_VCO_DIV to QSERDES_V4_DP_PHY_VCO_DIV. Unfortunately, this offset is different between v3 and v4 phys: #define QSERDES_V3_DP_PHY_VCO_DIV 0x064 #define QSERDES_V4_DP_PHY_VCO_DIV 0x070 meaning that we write the wrong register on v3 phys now. Add another generic register to 'regs' and use it here instead of a version specific define to fix this. This was discovered after Abhinav looked over register dumps with me from sc7180 Trogdor devices that started failing to light up the external display with v6.6 based kernels. It turns out that some monitors are very specific about their link clk frequency and if the default power on reset value is still there the monitor will show a blank screen or a garbled display. Other monitors are perfectly happy to get a bad clock signal. Cc: Douglas Anderson Cc: Abhinav Kumar Cc: Dmitry Baryshkov Fixes: ec17373aebd0 ("phy: qcom: qmp-combo: extract common function to setup clocks") Signed-off-by: Stephen Boyd --- drivers/phy/qualcomm/phy-qcom-qmp-combo.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c index 7d585a4bbbba..3b19d8ebf467 100644 --- a/drivers/phy/qualcomm/phy-qcom-qmp-combo.c +++ b/drivers/phy/qualcomm/phy-qcom-qmp-combo.c @@ -77,6 +77,7 @@ enum qphy_reg_layout { QPHY_COM_BIAS_EN_CLKBUFLR_EN, QPHY_DP_PHY_STATUS, + QPHY_DP_PHY_VCO_DIV, QPHY_TX_TX_POL_INV, QPHY_TX_TX_DRV_LVL, @@ -102,6 +103,7 @@ static const unsigned int qmp_v3_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = { [QPHY_COM_BIAS_EN_CLKBUFLR_EN] = QSERDES_V3_COM_BIAS_EN_CLKBUFLR_EN, [QPHY_DP_PHY_STATUS] = QSERDES_V3_DP_PHY_STATUS, + [QPHY_DP_PHY_VCO_DIV] = QSERDES_V3_DP_PHY_VCO_DIV, [QPHY_TX_TX_POL_INV] = QSERDES_V3_TX_TX_POL_INV, [QPHY_TX_TX_DRV_LVL] = QSERDES_V3_TX_TX_DRV_LVL, @@ -126,6 +128,7 @@ static const unsigned int qmp_v45_usb3phy_regs_layout[QPHY_LAYOUT_SIZE] = { [QPHY_COM_BIAS_EN_CLKBUFLR_EN] = QSERDES_V4_COM_BIAS_EN_CLKBUFLR_EN, [QPHY_DP_PHY_STATUS] = QSERDES_V4_DP_PHY_STATUS, + [QPHY_DP_PHY_VCO_DIV] = QSERDES_V4_DP_PHY_VCO_DIV, [QPHY_TX_TX_POL_INV] = QSERDES_V4_TX_TX_POL_INV, [QPHY_TX_TX_DRV_LVL] = QSERDES_V4_TX_TX_DRV_LVL, @@ -2162,6 +2165,7 @@ static int qmp_combo_configure_dp_clocks(struct qmp_combo *qmp) const struct phy_configure_opts_dp *dp_opts = &qmp->dp_opts; u32 phy_vco_div; unsigned long pixel_freq; + const struct qmp_phy_cfg *cfg = qmp->cfg; switch (dp_opts->link_rate) { case 1620: @@ -2184,7 +2188,7 @@ static int qmp_combo_configure_dp_clocks(struct qmp_combo *qmp) /* Other link rates aren't supported */ return -EINVAL; } - writel(phy_vco_div, qmp->dp_dp_phy + QSERDES_V4_DP_PHY_VCO_DIV); + writel(phy_vco_div, qmp->dp_dp_phy + cfg->regs[QPHY_DP_PHY_VCO_DIV]); clk_set_rate(qmp->dp_link_hw.clk, dp_opts->link_rate * 100000); clk_set_rate(qmp->dp_pixel_hw.clk, pixel_freq); base-commit: 4cece764965020c22cff7665b18a012006359095 -- https://chromeos.dev