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: 9960089 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 02685601E9 for ; Tue, 19 Sep 2017 19:57:46 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E7227286E7 for ; Tue, 19 Sep 2017 19:57:45 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB9FF28EDA; Tue, 19 Sep 2017 19:57:45 +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 97691286E7 for ; Tue, 19 Sep 2017 19:57:45 +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=E+CY+HXQHKH3vFIOIes1g61rP6SBb5wzD6Lolbzsfl8=; b=m3M6dMnPwCD/PvNlnwwsFHI4Nc SlaaQsiunxq1dKxN+1sD2EWs1HzOhdwxgNL9LZ0tTbVwajlAi6lDRO7OljPN3dCO2ZtqXsFm1PruH 2uxjuYWNsc9KWA1WmKqqkn/G5tGRF25rk+lqgeAR2Hujeru4joA6xAlj9M0AyKrgujkj9aeB1zLDJ eWfEs2UcrR/41+dCZINT8pnvh6E/W1w08vRbDf9h1KnHJ1NtlogOoi+HoSZL0VvCA/r0KQM9A3Yg1 exkJDRCPvFjCzmdREP48wCnpf0+ZyBRZF/xqy5ZQ9Rl1bQrDgpwP0qKwbTUafW22yjx8uTjKgfQ1g TyBTw5Lw==; 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 1duOeP-0000lB-4I; Tue, 19 Sep 2017 19:57:45 +0000 Received: from mail-pf0-x232.google.com ([2607:f8b0:400e:c00::232]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1duOdx-0000Id-Gf for linux-rockchip@lists.infradead.org; Tue, 19 Sep 2017 19:57:22 +0000 Received: by mail-pf0-x232.google.com with SMTP id m63so352906pfk.7 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=qjfSXVbQitq069TdAVLsmoJ7YN93D3Hm8fpWXtkIFbq9yXhdkavUoBxWBv2X2aLGVL LkNewLDLyIdCKxLppb7hNr1zZZf3teGXow0LBoFRYe6vSKITuqeVIwR/jervq+X0fOG8 iNP7lovqlNb9AtlmITTuXXUcIy66A/dWOWE3Ak8U0a3f8vMSPrq2WiiNo62DpeibiQgT CkfJq09hTInPe7JWW8VnclPsafQvk6OgtTknIXYOyK1RB9urfZAE5LRinsZ3B0B7R8qg 8l7xKCkNXjE90aa23vGgdaE5fklE5/clBKmWTrBHRM0lGTw5ykFtgmJBTik01n8go9vo 4Nrw== X-Gm-Message-State: AHPjjUjl0lBI5Z/4h3A3GaomCr8kFSM/VlR2og/GCtQLTPZHJdmOOx25 p5qfco9ZkL6WD+s1uNJko7rNhw== 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_877532_DAD12FCD X-CRM114-Status: GOOD ( 12.35 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Upstream kernel work for Rockchip platforms 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-rockchip" Errors-To: linux-rockchip-bounces+patchwork-linux-rockchip=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);