From patchwork Fri Sep 22 16:44:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Doug Anderson X-Patchwork-Id: 9966645 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 9C5D86035E for ; Fri, 22 Sep 2017 16:47:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 8CB9E29934 for ; Fri, 22 Sep 2017 16:47:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 8135329936; Fri, 22 Sep 2017 16:47:47 +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 E734B29785 for ; Fri, 22 Sep 2017 16:47:46 +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=EB48DvsS5St6s/UYKnlEJpzbpvG7HPC7aj5HvIcjiKo=; b=r1PgFeSay5hVMZYQa62yf9rv+n hBmbrJmWn6Ke+8iqHEGGn8yQ3nFsZRMykcv9d3Y4TpxtbHJ/ZZG84DXofi5RrofQ6MVy3V14TlSE1 lF3oEQ97NmNykfQY9ygdMeIMuqv2ylxnpxN/LF6FUrXXMjSgkP71FD5nSLI8CvkYbNDhlOS+Nas8i VFpwO2dv7wRlXWd9GYFSCXyg7e3oeLelUDzLsA30QOLs/1n5CrC+baOHuYashbkbpGhbe4ucL+Bh3 DvbfDQFOR8HTZo5rqZfdGXH/9P/k6auN5GLiKi35RkM9uX+XoXMl3JctNQfIRyufcqbD0J4czSF5y r4TPfZeQ==; 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 1dvR74-0007U3-Cd; Fri, 22 Sep 2017 16:47:38 +0000 Received: from mail-pf0-x233.google.com ([2607:f8b0:400e:c00::233]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dvR4J-0004RL-He for linux-arm-kernel@lists.infradead.org; Fri, 22 Sep 2017 16:45:06 +0000 Received: by mail-pf0-x233.google.com with SMTP id d187so804549pfg.11 for ; Fri, 22 Sep 2017 09:44:27 -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=oQcd8cDXnxnjf9BRGM/TQge6A1BPrPngau1tZJpzeIk=; b=HgH/kb8DY6In+GDEgjCbdiS0PtQSTEN2nd0qdMKHweUrmgnyZtuR4IeQ6SOreqn/Ez tUcPgAzmNEKRmeRNiBQWMH/HEew+iUhBPHk95LC21cjQ9Jj0WjW6QaZ7ybS+TQMfrKhX Qf3KMEStUVw/DqzLQ/aDx3WPyPujUbGLfx36Q= 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=oQcd8cDXnxnjf9BRGM/TQge6A1BPrPngau1tZJpzeIk=; b=gldNI2wmLm2XcZmpMzWCD6tl8uVN2kKwWPLc7+0uKikbRn6cQSxot/hHBB5kVKqB+u hmq7lFqj1W2X2L2x5/8tjgxPhpHVKk3O5G7KEBkoMlFMmGust57HROAdBU+ARq6JCkGy zfrzK8N3wwIseBTYDY6hDOry+gyCqsWMOnYhVJMWPDnWvL94T34plwOFIPXhCDNGdmDe 9d/TKJ3YFAKlNgdeP7FMyub4huWuDXiy9UVKwNevI3JwPnHX0js6tFAehn6ESEK7OcWt dXSCh4SHVyWwp1xbOgvCT+1syzysZkVgybyqwfzXzEJ0XS6rwAZCzI2VPKoG8dLQivbH Xu/g== X-Gm-Message-State: AHPjjUg3/K4ax4Qh889G3NwG2zFb7ReYq4jjt2WmuM6r8tDjII0r5e99 aBjekPGOXEXNQyP0l1AAhrfliw== X-Google-Smtp-Source: AOwi7QAbdmIIaPY49dh5xGjVwKHD1+VaYgtXW0yB6D0erDA1r0xZsiGFRxkiO0Cn8ajm+krAATJfHw== X-Received: by 10.98.58.221 with SMTP id v90mr9971283pfj.338.1506098666645; Fri, 22 Sep 2017 09:44:26 -0700 (PDT) Received: from tictac.mtv.corp.google.com ([172.22.112.154]) by smtp.gmail.com with ESMTPSA id s189sm365021pgc.1.2017.09.22.09.44.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 22 Sep 2017 09:44:25 -0700 (PDT) From: Douglas Anderson To: kishon@ti.com, heiko@sntech.de, zyw@rock-chips.com Subject: [PATCH v3 4/4] phy: rockchip-typec: Do the calibration more correctly Date: Fri, 22 Sep 2017 09:44:06 -0700 Message-Id: <20170922164406.27606-5-dianders@chromium.org> X-Mailer: git-send-email 2.14.1.821.g8fa685d3b7-goog In-Reply-To: <20170922164406.27606-1-dianders@chromium.org> References: <20170922164406.27606-1-dianders@chromium.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170922_094448_208360_898D6BEF X-CRM114-Status: GOOD ( 13.26 ) 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 v3: None 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 95f8f23676b4..a96635447d48 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);