From patchwork Sat Nov 19 20:47:28 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Warren X-Patchwork-Id: 126616 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from theia.denx.de (theia.denx.de [85.214.87.163]) by ozlabs.org (Postfix) with ESMTP id 2FC3DB7234 for ; Sun, 20 Nov 2011 07:47:47 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id CEB652886A; Sat, 19 Nov 2011 21:47:45 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id y8+1IjL4nYwD; Sat, 19 Nov 2011 21:47:45 +0100 (CET) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 4606628888; Sat, 19 Nov 2011 21:47:43 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 190B92886A for ; Sat, 19 Nov 2011 21:47:42 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at theia.denx.de Received: from theia.denx.de ([127.0.0.1]) by localhost (theia.denx.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id U2sv87i9sIZb for ; Sat, 19 Nov 2011 21:47:41 +0100 (CET) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 NOT_IN_BL_NJABL=-1.5 (only DNSBL check requested) Received: from avon.wwwdotorg.org (avon.wwwdotorg.org [70.85.31.133]) by theia.denx.de (Postfix) with ESMTPS id 48FE82880B for ; Sat, 19 Nov 2011 21:47:39 +0100 (CET) Received: from severn.wwwdotorg.org (unknown [192.168.65.5]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by avon.wwwdotorg.org (Postfix) with ESMTPS id 042C26427; Sat, 19 Nov 2011 13:50:10 -0700 (MST) Received: from localhost.localdomain (unknown [192.168.62.30]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by severn.wwwdotorg.org (Postfix) with ESMTPSA id D7BCAE4781; Sat, 19 Nov 2011 13:47:36 -0700 (MST) From: Stephen Warren To: Simon Glass , Tom Warren , Albert Aribaud Date: Sat, 19 Nov 2011 13:47:28 -0700 Message-Id: <1321735649-27138-3-git-send-email-swarren@nvidia.com> X-Mailer: git-send-email 1.7.5.4 In-Reply-To: <1321735649-27138-1-git-send-email-swarren@nvidia.com> References: <1321735649-27138-1-git-send-email-swarren@nvidia.com> X-NVConfidentiality: public X-Virus-Scanned: clamav-milter 0.96.5 at avon.wwwdotorg.org X-Virus-Status: Clean Cc: u-boot@lists.denx.de, Marc Dietrich Subject: [U-Boot] [RFC PATCH 2/3] tegra2: Fix conflicting pinmux for UARTA X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.11 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: u-boot-bounces@lists.denx.de Errors-To: u-boot-bounces@lists.denx.de Tegra appears to boot with function UARTA pre-selected on mux group SDB. If two mux groups are both set to the same function, it's unclear which group's pins drive the RX signals into the HW module. For UARTA, SDB certainly overrides group IRTX in practice. To solve this, configure some alternative function on SDB to avoid the conflict. Also, tri-state the group to avoid driving any signal onto it until we know what's connected. Signed-off-by: Stephen Warren --- board/nvidia/common/board.c | 12 ++++++++++++ 1 files changed, 12 insertions(+), 0 deletions(-) diff --git a/board/nvidia/common/board.c b/board/nvidia/common/board.c index c806a6b..13742d7 100644 --- a/board/nvidia/common/board.c +++ b/board/nvidia/common/board.c @@ -88,6 +88,18 @@ static void pin_mux_uart(void) pinmux_tristate_disable(PINGRP_IRRX); pinmux_tristate_disable(PINGRP_IRTX); + + /* + * Tegra appears to boot with function UARTA pre-selected on mux + * group SDB. If two mux groups are both set to the same function, + * it's unclear which group's pins drive the RX signals into the + * HW module. For UARTA, SDB certainly overrides group IRTX in + * practice. To solve this, configure some alternative function on + * SDB to avoid the conflict. Also, tri-state the group to avoid + * driving any signal onto it until we know what's connected. + */ + pinmux_tristate_enable(PINGRP_SDB); + pinmux_set_func(PINGRP_SDB, PMUX_FUNC_SDIO3); #endif /* CONFIG_TEGRA2_ENABLE_UARTA */ #if defined(CONFIG_TEGRA2_ENABLE_UARTD) pinmux_set_func(PINGRP_GMC, PMUX_FUNC_UARTD);