From: Rob Herring <robherring2@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 08/10] ARM: highbank: setup peripherals based on power domain status
Date: Wed, 15 May 2013 14:56:14 -0500 [thread overview]
Message-ID: <1368647776-12940-8-git-send-email-robherring2@gmail.com> (raw)
In-Reply-To: <1368647776-12940-1-git-send-email-robherring2@gmail.com>
From: Rob Herring <rob.herring@calxeda.com>
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 <rob.herring@calxeda.com>
---
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)
--
1.8.1.2
next prev parent reply other threads:[~2013-05-15 19:56 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-15 19:56 [U-Boot] [PATCH 01/10] ARM: move interrupt_init to before relocation Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 02/10] net: calxedaxgmac: enable rx cut-thru Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 03/10] ARM: highbank: update config options Rob Herring
2013-05-16 15:44 ` Tom Rini
2013-05-15 19:56 ` [U-Boot] [PATCH 04/10] ARM: highbank: fix get_tbclk value to timer rate Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 05/10] ARM: highbank: set timer prescaler to 256 Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 06/10] ARM: highbank: avoid bss write in timer_init Rob Herring
2013-05-15 19:56 ` [U-Boot] [PATCH 07/10] ARM: highbank: enable reset on command timeout Rob Herring
2013-05-15 19:56 ` Rob Herring [this message]
2013-05-16 15:48 ` [U-Boot] [PATCH 08/10] ARM: highbank: setup peripherals based on power domain status Tom Rini
2013-05-15 19:56 ` [U-Boot] [PATCH 09/10] ARM: highbank: fix build with CONFIG_MISC_INIT_R turned off Rob Herring
2013-05-15 20:31 ` Albert ARIBAUD
2013-05-21 21:33 ` [U-Boot] [PATCH v2] ARM: highbank: compile misc_init_r only if CONFIG_MISC_INIT_R Rob Herring
2013-05-21 21:33 ` [U-Boot] [PATCH v2] ARM: highbank: setup peripherals based on power domain status Rob Herring
2013-05-21 21:33 ` [U-Boot] [PATCH v2] ARM: highbank: update config options Rob Herring
2013-05-21 21:33 ` [U-Boot] [PATCH v2] ARM: move interrupt_init to before relocation Rob Herring
2013-06-11 8:22 ` [U-Boot] [PATCH v2] ARM: highbank: compile misc_init_r only if CONFIG_MISC_INIT_R Albert ARIBAUD
2013-05-15 19:56 ` [U-Boot] [PATCH 10/10] highbank: enable keyed autoboot stop Rob Herring
2013-05-15 20:26 ` [U-Boot] [PATCH 01/10] ARM: move interrupt_init to before relocation Albert ARIBAUD
2013-05-15 21:29 ` Rob Herring
2013-05-16 9:44 ` Albert ARIBAUD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1368647776-12940-8-git-send-email-robherring2@gmail.com \
--to=robherring2@gmail.com \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.