From patchwork Sun Apr 3 08:58:08 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 89473 X-Patchwork-Delegate: wd@denx.de 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 C3F08B6F14 for ; Sun, 3 Apr 2011 18:59:06 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 557B728085; Sun, 3 Apr 2011 10:59:00 +0200 (CEST) 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 CamrjWGArLEh; Sun, 3 Apr 2011 10:59:00 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 5411D2808B; Sun, 3 Apr 2011 10:58:47 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 754DE28084 for ; Sun, 3 Apr 2011 10:58:45 +0200 (CEST) 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 Fao1nT2cFU9l for ; Sun, 3 Apr 2011 10:58:44 +0200 (CEST) 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 smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by theia.denx.de (Postfix) with ESMTPS id 013862807E for ; Sun, 3 Apr 2011 10:58:42 +0200 (CEST) Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id B0C0C1B4024 for ; Sun, 3 Apr 2011 08:58:39 +0000 (UTC) From: Mike Frysinger To: u-boot@lists.denx.de Date: Sun, 3 Apr 2011 04:58:08 -0400 Message-Id: <1301821121-26743-2-git-send-email-vapier@gentoo.org> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1301821121-26743-1-git-send-email-vapier@gentoo.org> References: <1301821121-26743-1-git-send-email-vapier@gentoo.org> Subject: [U-Boot] [PATCH 01/34] Blackfin: bf518f-ezbrd: don't require SPI logic all the time X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.9 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 Only the first run of boards had a ksz switch on it, so if building for a newer silicon rev or SPI is disabled, don't bother checking for the ksz. Signed-off-by: Mike Frysinger --- board/bf518f-ezbrd/bf518f-ezbrd.c | 30 +++++++++++++++++++++--------- 1 files changed, 21 insertions(+), 9 deletions(-) diff --git a/board/bf518f-ezbrd/bf518f-ezbrd.c b/board/bf518f-ezbrd/bf518f-ezbrd.c index ff1ac4c..6b455de 100644 --- a/board/bf518f-ezbrd/bf518f-ezbrd.c +++ b/board/bf518f-ezbrd/bf518f-ezbrd.c @@ -57,6 +57,13 @@ static void board_init_enetaddr(uchar *mac_addr) eth_setenv_enetaddr("ethaddr", mac_addr); } +/* Only the first run of boards had a KSZ switch */ +#if defined(CONFIG_BFIN_SPI) && __SILICON_REVISION__ == 0 +# define KSZ_POSSIBLE 1 +#else +# define KSZ_POSSIBLE 0 +#endif + #define KSZ_MAX_HZ 5000000 #define KSZ_WRITE 0x02 @@ -109,17 +116,16 @@ static int ksz8893m_reset(struct spi_slave *slave) return ret; } -int board_eth_init(bd_t *bis) +static bool board_ksz_init(void) { - static bool switch_is_alive = false, phy_is_ksz = true; - int ret; + static bool switch_is_alive = false; if (!switch_is_alive) { struct spi_slave *slave = spi_setup_slave(0, 1, KSZ_MAX_HZ, SPI_MODE_3); if (slave) { if (!spi_claim_bus(slave)) { - phy_is_ksz = (ksz8893m_reg_read(slave, KSZ_REG_CHID) == 0x88); - ret = phy_is_ksz ? ksz8893m_reset(slave) : 0; + bool phy_is_ksz = (ksz8893m_reg_read(slave, KSZ_REG_CHID) == 0x88); + int ret = phy_is_ksz ? ksz8893m_reset(slave) : 0; switch_is_alive = (ret == 0); spi_release_bus(slave); } @@ -127,10 +133,16 @@ int board_eth_init(bd_t *bis) } } - if (switch_is_alive) - return bfin_EMAC_initialize(bis); - else - return -1; + return switch_is_alive; +} + +int board_eth_init(bd_t *bis) +{ + if (KSZ_POSSIBLE) { + if (!board_ksz_init()) + return 0; + } + return bfin_EMAC_initialize(bis); } #endif