From patchwork Tue Sep 19 19:56:29 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 9960103 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id AA1C7601E9 for ; Tue, 19 Sep 2017 19:58:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 9A9F3286E7 for ; Tue, 19 Sep 2017 19:58:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8F6CF28EDA; Tue, 19 Sep 2017 19:58:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_MED autolearn=unavailable version=3.3.1 Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 1BC13286E7 for ; Tue, 19 Sep 2017 19:58:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:References: In-Reply-To:Message-Id:Date:Subject:To:From:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=P3JnnUoPt4B9vfew1rVSzyN4kSjpq8D723TRrxQMCNE=; b=a9Zj9EaCgbSepHYvYe9bbLCbt5 KgukP3TFRFGRt9eYC2t3Epv4DUFk31fIpTw0LdyPsYUA33x1nEInefraRRO1pdxd8qPo+m9PWDij2 pcgkHhyuWXboQXf14oeE5TgYXVOZ7dAqTU03Jl1W41+U4cuy6rlqLEaJx0glzjtvwfd3F2rowvDQO hlVz0l0wYab+ddbRsTTuNXk/V4hpFMY06QbcXLD3NjZtoe+TbNhq0uyCEY5dsAlvS/2XV1nVzYDBZ NkgHJvmc6j9dwoJ7Vos30K/ahDdg8+10MW/jrdH2Ja/leeZT6mMhubN+gSU9GS+cTVW4pgha+iXTl QMoTUafg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1duOeo-00013p-7M; Tue, 19 Sep 2017 19:58:10 +0000 Received: from mail-pf0-x234.google.com ([2607:f8b0:400e:c00::234]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1duOdx-0000Ic-GY for linux-arm-kernel@lists.infradead.org; Tue, 19 Sep 2017 19:57:24 +0000 Received: by mail-pf0-x234.google.com with SMTP id n24so356178pfk.5 for ; Tue, 19 Sep 2017 12:56:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=b3WffiyFfvEwSzk0qozW2XWBtiap65Sb7D/f5vgm6UA=; b=OUdha01zfcpprkuBF+fZ1KBmP52lY0pLzglMG2sVmvXjvcKIqHoqQqwdA4IEUcAzdQ kQmGjFlnpfSPS8kYGRJ86fcJKvWFc4XeGQw4sPrrQgdnhdZyjoBwJQgvjkVsBFSvt2aW rby535kEy4BRem93PWQXQrL3Lx/WhalswuukY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=b3WffiyFfvEwSzk0qozW2XWBtiap65Sb7D/f5vgm6UA=; b=CW4bZdHqL2xpyS5DoFpZ6w+SZGxchGNfWjm9h0mPNmJF7m2bWgDC5HZppY/0oIEoGH tyRPYRxsKe2eN6QaH8Wwf+oH9irhdIjv9fKH+HJYLBhgCBZ/ESVsl/Zvh6ToSgY9JRSd rEZ6K4EtG8eXcF7NGw6ryUBRUFRjVAOwhmKFNwohi8Du+bvw6QoewQl3rlPMd4oddL0z KMrKi2CssRM25AOFrpx1JinDNmoPfahjYOe6V9mP1EJ3d55X/+BjBlFTEjw3hUctuhCA pYdkvhYz4cBILrMqxlTe9uikqxfF2CUZ+SNKogUmcPdsTz6zDdOX5UBBDmrI7vv1RUai lWkQ== X-Gm-Message-State: AHPjjUhsjCzHAVdEmKE8UVfN7M+D8T3oXLR/cE2G827cRb9sL+CXoD50 w3qQrnCVoEiOQg/nwStdQsyMvA== X-Google-Smtp-Source: AOwi7QDKzJNtnRDGi9orKK5KRSzOBaIyVf4XnCkLwR7U2kYBDRLVrvKbtVyNy7CIyeKx+lp1xx6c0w== X-Received: by 10.98.158.201 with SMTP id f70mr2373502pfk.162.1505851015850; Tue, 19 Sep 2017 12:56:55 -0700 (PDT) Received: from tictac.mtv.corp.google.com ([172.22.112.154]) by smtp.gmail.com with ESMTPSA id k12sm7079131pgt.3.2017.09.19.12.56.54 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Sep 2017 12:56:55 -0700 (PDT) From: Douglas Anderson To: kishon@ti.com, heiko@sntech.de, zyw@rock-chips.com Subject: [PATCH v2 3/4] phy: rockchip-typec: Do the calibration more correctly Date: Tue, 19 Sep 2017 12:56:29 -0700 Message-Id: <20170919195630.18747-4-dianders@chromium.org> X-Mailer: git-send-email 2.14.1.690.gbb1197296e-goog In-Reply-To: <20170919195630.18747-1-dianders@chromium.org> References: <20170919195630.18747-1-dianders@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170919_125717_897939_8EAE56DC X-CRM114-Status: GOOD ( 13.79 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: shawnn@chromium.org, Douglas Anderson , dnschneid@chromium.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, groeck@chromium.org, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Virus-Scanned: ClamAV using ClamSMTP Calculate the calibration code as per the docs. The docs talk about reading and averaging the pullup and pulldown calibration codes. They also talk about adding in some adjustment codes. Let's do what the docs say. In practice this doesn't seem to matter a whole lot. On a device I tested the pullup and pulldown codes were nearly the same (0x23 and 0x24) and the adjustment codes were 0. Reviewed-by: Chris Zhong Signed-off-by: Douglas Anderson --- Changes in v2: - Removed extra blank line drivers/phy/rockchip/phy-rockchip-typec.c | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/drivers/phy/rockchip/phy-rockchip-typec.c b/drivers/phy/rockchip/phy-rockchip-typec.c index b8696a7c45fb..a1f961844efe 100644 --- a/drivers/phy/rockchip/phy-rockchip-typec.c +++ b/drivers/phy/rockchip/phy-rockchip-typec.c @@ -560,24 +560,33 @@ static void tcphy_dp_aux_calibration(struct rockchip_typec_phy *tcphy) u16 val; u16 tx_ana_ctrl_reg_1; u16 tx_ana_ctrl_reg_2; - s32 pu_calib_code; - - /* disable txda_cal_latch_en for rewrite the calibration values */ - tx_ana_ctrl_reg_1 = readl(tcphy->base + TX_ANA_CTRL_REG_1); - tx_ana_ctrl_reg_1 &= ~TXDA_CAL_LATCH_EN; - writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1); + s32 pu_calib_code, pd_calib_code; + s32 pu_adj, pd_adj; + u16 calib; /* - * read a resistor calibration code from CMN_TXPUCAL_CTRL[5:0] and - * write it to TX_DIG_CTRL_REG_2[5:0]. + * Calculate calibration code as per docs: use an average of the + * pull down and pull up. Then add in adjustments. */ val = readl(tcphy->base + CMN_TXPUCAL_CTRL); pu_calib_code = CMN_CALIB_CODE_POS(val); + val = readl(tcphy->base + CMN_TXPDCAL_CTRL); + pd_calib_code = CMN_CALIB_CODE_POS(val); + val = readl(tcphy->base + CMN_TXPU_ADJ_CTRL); + pu_adj = CMN_CALIB_CODE(val); + val = readl(tcphy->base + CMN_TXPD_ADJ_CTRL); + pd_adj = CMN_CALIB_CODE(val); + calib = (pu_calib_code + pd_calib_code) / 2 + pu_adj + pd_adj; + + /* disable txda_cal_latch_en for rewrite the calibration values */ + tx_ana_ctrl_reg_1 = readl(tcphy->base + TX_ANA_CTRL_REG_1); + tx_ana_ctrl_reg_1 &= ~TXDA_CAL_LATCH_EN; + writel(tx_ana_ctrl_reg_1, tcphy->base + TX_ANA_CTRL_REG_1); /* write the calibration, then delay 10 ms as sample in docs */ val = readl(tcphy->base + TX_DIG_CTRL_REG_2); val &= ~(TX_RESCAL_CODE_MASK << TX_RESCAL_CODE_OFFSET); - val |= pu_calib_code << TX_RESCAL_CODE_OFFSET; + val |= calib << TX_RESCAL_CODE_OFFSET; writel(val, tcphy->base + TX_DIG_CTRL_REG_2); usleep_range(10000, 10050);