From patchwork Wed May 15 19:56:14 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rob Herring X-Patchwork-Id: 244167 X-Patchwork-Delegate: albert.aribaud@free.fr 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 567392C00A9 for ; Thu, 16 May 2013 05:57:23 +1000 (EST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 164294A08E; Wed, 15 May 2013 21:57:13 +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 sbKMlJY29mS1; Wed, 15 May 2013 21:57:12 +0200 (CEST) Received: from theia.denx.de (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 93F854A04A; Wed, 15 May 2013 21:57:01 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by theia.denx.de (Postfix) with ESMTP id 9E2394A037 for ; Wed, 15 May 2013 21:56:55 +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 mZdPxKGPmmY8 for ; Wed, 15 May 2013 21:56:54 +0200 (CEST) X-policyd-weight: NOT_IN_SBL_XBL_SPAMHAUS=-1.5 NOT_IN_SPAMCOP=-1.5 BL_NJABL=SKIP(-1.5) (only DNSBL check requested) Received: from mail-ob0-f172.google.com (mail-ob0-f172.google.com [209.85.214.172]) by theia.denx.de (Postfix) with ESMTPS id 72D7E4A02E for ; Wed, 15 May 2013 21:56:52 +0200 (CEST) Received: by mail-ob0-f172.google.com with SMTP id tb18so2513899obb.31 for ; Wed, 15 May 2013 12:56:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references; bh=z6Jmsxi6/PX9+9xY917MZKwjZqagiNo9eoqvToti87k=; b=mmGjFg0pE+TQjkAd+XIRTyz5btsVZ1gZRQsaPUUC7hfDq7g+JdQ+cvd3lwEpei5nzy Ge5FqUwqiKFlJf8AYi25sfAiEU9dHgp+7WQRLFq1qNddQHY9vK9H0EnGgQsw5XBsPXch 7gKUmJzWXhqB9bWalo18leTieFgO/aVlF9qLMm/8O22lNcVFXmUiwQ0orPxPgAxit2hO KNn8xrbw8YR0XrmrUySvff+O6F0ZZMLYDhBkSpyHGqTVf3PmNXSJfD1ph4urCso3ZQC1 aQSn/GQEdWuU/EFKmdmVa6E4x9wLwrob5ssX7ldCHBdelnwuawfuwx95se8RMr3ynznl BqYQ== X-Received: by 10.182.199.106 with SMTP id jj10mr11826655obc.45.1368647811784; Wed, 15 May 2013 12:56:51 -0700 (PDT) Received: from rob-laptop.calxeda.com ([173.226.190.126]) by mx.google.com with ESMTPSA id qj8sm4440239oeb.2.2013.05.15.12.56.49 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 15 May 2013 12:56:50 -0700 (PDT) From: Rob Herring To: u-boot@lists.denx.de Date: Wed, 15 May 2013 14:56:14 -0500 Message-Id: <1368647776-12940-8-git-send-email-robherring2@gmail.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1368647776-12940-1-git-send-email-robherring2@gmail.com> References: <1368647776-12940-1-git-send-email-robherring2@gmail.com> Cc: Rob Herring Subject: [U-Boot] [PATCH 08/10] ARM: highbank: setup peripherals based on power domain status 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 From: Rob Herring Accessing powered down peripherals will hang the bus, so check power domain status before initializing SATA and fixup the FDT to disable unused peripherals. Signed-off-by: Rob Herring --- board/highbank/highbank.c | 29 +++++++++++++++++++++++++++-- include/configs/highbank.h | 1 + 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/board/highbank/highbank.c b/board/highbank/highbank.c index 09cd45d..4cc4b1c 100644 --- a/board/highbank/highbank.c +++ b/board/highbank/highbank.c @@ -25,11 +25,17 @@ #define HB_SREG_A9_PWR_REQ 0xfff3cf00 #define HB_SREG_A9_BOOT_SRC_STAT 0xfff3cf04 +#define HB_SREG_A9_PWRDOM_STAT 0xfff3cf20 + #define HB_PWR_SUSPEND 0 #define HB_PWR_SOFT_RESET 1 #define HB_PWR_HARD_RESET 2 #define HB_PWR_SHUTDOWN 3 +#define PWRDOM_STAT_SATA 0x80000000 +#define PWRDOM_STAT_PCI 0x40000000 +#define PWRDOM_STAT_EMMC 0x20000000 + DECLARE_GLOBAL_DATA_PTR; /* @@ -58,9 +64,12 @@ int misc_init_r(void) { char envbuffer[16]; u32 boot_choice; + u32 reg = readl(HB_SREG_A9_PWRDOM_STAT); - ahci_init(0xffe08000); - scsi_scan(1); + if (reg & PWRDOM_STAT_SATA) { + ahci_init(0xffe08000); + scsi_scan(1); + } boot_choice = readl(HB_SREG_A9_BOOT_SRC_STAT) & 0xff; sprintf(envbuffer, "bootcmd%d", boot_choice); @@ -85,6 +94,22 @@ void dram_init_banksize(void) gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE; } +#if defined(CONFIG_OF_BOARD_SETUP) +void ft_board_setup(void *fdt, bd_t *bd) +{ + static const char disabled[] = "disabled"; + u32 reg = readl(HB_SREG_A9_PWRDOM_STAT); + + if (!(reg & PWRDOM_STAT_SATA)) + do_fixup_by_compat(fdt, "calxeda,hb-ahci", "status", + disabled, sizeof(disabled), 1); + + if (!(reg & PWRDOM_STAT_EMMC)) + do_fixup_by_compat(fdt, "calxeda,hb-sdhci", "status", + disabled, sizeof(disabled), 1); +} +#endif + void reset_cpu(ulong addr) { writel(HB_PWR_HARD_RESET, HB_SREG_A9_PWR_REQ); diff --git a/include/configs/highbank.h b/include/configs/highbank.h index 978681e..06c13f2 100644 --- a/include/configs/highbank.h +++ b/include/configs/highbank.h @@ -27,6 +27,7 @@ #define CONFIG_SYS_HZ CFG_HZ #define CONFIG_OF_LIBFDT +#define CONFIG_OF_BOARD_SETUP #define CONFIG_FIT #define CONFIG_SUPPORT_RAW_INITRD #define CONFIG_SYS_BOOTMAPSZ (16 << 20)